xref: /haiku/src/add-ons/kernel/file_systems/nfs4/Inode.h (revision bf31ee39e56f00cb60142910f1770e0a26b604b5)
1*bf31ee39SPawel Dziepak /*
2*bf31ee39SPawel Dziepak  * Copyright 2012 Haiku, Inc. All rights reserved.
3*bf31ee39SPawel Dziepak  * Distributed under the terms of the MIT License.
4*bf31ee39SPawel Dziepak  *
5*bf31ee39SPawel Dziepak  * Authors:
6*bf31ee39SPawel Dziepak  *		Paweł Dziepak, pdziepak@quarnos.org
7*bf31ee39SPawel Dziepak  */
8*bf31ee39SPawel Dziepak #ifndef INODE_H
9*bf31ee39SPawel Dziepak #define INODE_H
10*bf31ee39SPawel Dziepak 
11*bf31ee39SPawel Dziepak 
12*bf31ee39SPawel Dziepak #include <SupportDefs.h>
13*bf31ee39SPawel Dziepak 
14*bf31ee39SPawel Dziepak #include "Filesystem.h"
15*bf31ee39SPawel Dziepak #include "NFS4Defs.h"
16*bf31ee39SPawel Dziepak 
17*bf31ee39SPawel Dziepak 
18*bf31ee39SPawel Dziepak class Inode {
19*bf31ee39SPawel Dziepak public:
20*bf31ee39SPawel Dziepak 						Inode(Filesystem* fs, const Filehandle &fh);
21*bf31ee39SPawel Dziepak 
22*bf31ee39SPawel Dziepak 	inline	ino_t		ID() const;
23*bf31ee39SPawel Dziepak 
24*bf31ee39SPawel Dziepak private:
25*bf31ee39SPawel Dziepak 			uint64		fFileId;
26*bf31ee39SPawel Dziepak 
27*bf31ee39SPawel Dziepak 			Filehandle	fHandle;
28*bf31ee39SPawel Dziepak 			Filesystem*	fFilesystem;
29*bf31ee39SPawel Dziepak };
30*bf31ee39SPawel Dziepak 
31*bf31ee39SPawel Dziepak 
32*bf31ee39SPawel Dziepak inline ino_t
33*bf31ee39SPawel Dziepak Inode::ID() const
34*bf31ee39SPawel Dziepak {
35*bf31ee39SPawel Dziepak 	if (sizeof(ino_t) >= sizeof(uint64))
36*bf31ee39SPawel Dziepak 		return fFileId;
37*bf31ee39SPawel Dziepak 	else
38*bf31ee39SPawel Dziepak 		return (ino_t)fFileId ^ (fFileId >>
39*bf31ee39SPawel Dziepak 					(sizeof(uint64) - sizeof(ino_t)) * 8);
40*bf31ee39SPawel Dziepak }
41*bf31ee39SPawel Dziepak 
42*bf31ee39SPawel Dziepak 
43*bf31ee39SPawel Dziepak #endif	// INODE_H
44*bf31ee39SPawel Dziepak 
45