xref: /haiku/src/add-ons/kernel/file_systems/nfs4/Inode.h (revision 821f13b0779e068d43bdd380b4c9791a1aec3832)
1bf31ee39SPawel Dziepak /*
2bf31ee39SPawel Dziepak  * Copyright 2012 Haiku, Inc. All rights reserved.
3bf31ee39SPawel Dziepak  * Distributed under the terms of the MIT License.
4bf31ee39SPawel Dziepak  *
5bf31ee39SPawel Dziepak  * Authors:
6bf31ee39SPawel Dziepak  *		Paweł Dziepak, pdziepak@quarnos.org
7bf31ee39SPawel Dziepak  */
8bf31ee39SPawel Dziepak #ifndef INODE_H
9bf31ee39SPawel Dziepak #define INODE_H
10bf31ee39SPawel Dziepak 
11bf31ee39SPawel Dziepak 
12212de720SPawel Dziepak #include <sys/stat.h>
13212de720SPawel Dziepak 
14bf31ee39SPawel Dziepak #include <SupportDefs.h>
15bf31ee39SPawel Dziepak 
16bf31ee39SPawel Dziepak #include "Filesystem.h"
17bf31ee39SPawel Dziepak #include "NFS4Defs.h"
18bf31ee39SPawel Dziepak 
19bf31ee39SPawel Dziepak 
20bf31ee39SPawel Dziepak class Inode {
21bf31ee39SPawel Dziepak public:
22bf31ee39SPawel Dziepak 						Inode(Filesystem* fs, const Filehandle &fh);
23bf31ee39SPawel Dziepak 
24bf31ee39SPawel Dziepak 	inline	ino_t		ID() const;
25d38e98d8SPawel Dziepak 	inline	mode_t		Type() const;
26bf31ee39SPawel Dziepak 
27212de720SPawel Dziepak 			status_t	Stat(struct stat* st);
28*821f13b0SPawel Dziepak 			status_t	OpenDir(uint64* cookie);
29212de720SPawel Dziepak 
30bf31ee39SPawel Dziepak private:
31bf31ee39SPawel Dziepak 			uint64		fFileId;
32d38e98d8SPawel Dziepak 			uint32		fType;
33bf31ee39SPawel Dziepak 
34bf31ee39SPawel Dziepak 			Filehandle	fHandle;
35bf31ee39SPawel Dziepak 			Filesystem*	fFilesystem;
36bf31ee39SPawel Dziepak };
37bf31ee39SPawel Dziepak 
38bf31ee39SPawel Dziepak 
39bf31ee39SPawel Dziepak inline ino_t
40bf31ee39SPawel Dziepak Inode::ID() const
41bf31ee39SPawel Dziepak {
42bf31ee39SPawel Dziepak 	if (sizeof(ino_t) >= sizeof(uint64))
43bf31ee39SPawel Dziepak 		return fFileId;
44bf31ee39SPawel Dziepak 	else
45bf31ee39SPawel Dziepak 		return (ino_t)fFileId ^ (fFileId >>
46bf31ee39SPawel Dziepak 					(sizeof(uint64) - sizeof(ino_t)) * 8);
47bf31ee39SPawel Dziepak }
48bf31ee39SPawel Dziepak 
49bf31ee39SPawel Dziepak 
50d38e98d8SPawel Dziepak inline mode_t
51d38e98d8SPawel Dziepak Inode::Type() const
52d38e98d8SPawel Dziepak {
53d38e98d8SPawel Dziepak 	return sNFSFileTypeToHaiku[fType];
54d38e98d8SPawel Dziepak }
55d38e98d8SPawel Dziepak 
56d38e98d8SPawel Dziepak 
57bf31ee39SPawel Dziepak #endif	// INODE_H
58bf31ee39SPawel Dziepak 
59