xref: /minix3/minix/include/minix/vfsif.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1 #ifndef __MINIX_VFSIF_H
2 #define __MINIX_VFSIF_H
3 
4 #include <sys/types.h>
5 #include <limits.h>
6 
7 /* VFS/FS flags */
8 #define REQ_RDONLY		001	/* FS is mounted read-only */
9 #define REQ_ISROOT		002	/* FS is root file system */
10 
11 #define PATH_NOFLAGS		000
12 #define PATH_RET_SYMLINK	010	/* Return a symlink object (i.e.
13 					 * do not continue with the contents
14 					 * of the symlink if it is the last
15 					 * component in a path). */
16 #define PATH_GET_UCRED		020	/* Request provides a grant ID in m9_l1
17 					 * and struct ucred size in m9_s4 (as
18 					 * opposed to a REQ_UID). */
19 
20 #define RES_NOFLAGS		000
21 #define RES_THREADED		001	/* FS supports multithreading */
22 #define RES_HASPEEK		002	/* FS implements REQ_PEEK/REQ_BPEEK */
23 #define RES_64BIT		004	/* FS can handle 64-bit file sizes */
24 
25 /* VFS/FS error messages */
26 #define EENTERMOUNT              (-301)
27 #define ELEAVEMOUNT              (-302)
28 #define ESYMLINK                 (-303)
29 
30 /* VFS/FS types */
31 
32 /* User credential structure */
33 typedef struct {
34 	uid_t vu_uid;
35 	gid_t vu_gid;
36 	int vu_ngroups;
37 	gid_t vu_sgroups[NGROUPS_MAX];
38 } vfs_ucred_t;
39 
40 /* Request numbers */
41 #define REQ_GETNODE	(FS_BASE + 1)	/* Should be removed */
42 #define REQ_PUTNODE	(FS_BASE + 2)
43 #define REQ_SLINK	(FS_BASE + 3)
44 #define REQ_FTRUNC	(FS_BASE + 4)
45 #define REQ_CHOWN	(FS_BASE + 5)
46 #define REQ_CHMOD	(FS_BASE + 6)
47 #define REQ_INHIBREAD	(FS_BASE + 7)
48 #define REQ_STAT	(FS_BASE + 8)
49 #define REQ_UTIME	(FS_BASE + 9)
50 #define REQ_STATVFS	(FS_BASE + 10)
51 #define REQ_BREAD	(FS_BASE + 11)
52 #define REQ_BWRITE	(FS_BASE + 12)
53 #define REQ_UNLINK	(FS_BASE + 13)
54 #define REQ_RMDIR	(FS_BASE + 14)
55 #define REQ_UNMOUNT	(FS_BASE + 15)
56 #define REQ_SYNC	(FS_BASE + 16)
57 #define REQ_NEW_DRIVER	(FS_BASE + 17)
58 #define REQ_FLUSH	(FS_BASE + 18)
59 #define REQ_READ	(FS_BASE + 19)
60 #define REQ_WRITE	(FS_BASE + 20)
61 #define REQ_MKNOD	(FS_BASE + 21)
62 #define REQ_MKDIR	(FS_BASE + 22)
63 #define REQ_CREATE	(FS_BASE + 23)
64 #define REQ_LINK	(FS_BASE + 24)
65 #define REQ_RENAME	(FS_BASE + 25)
66 #define REQ_LOOKUP	(FS_BASE + 26)
67 #define REQ_MOUNTPOINT	(FS_BASE + 27)
68 #define REQ_READSUPER	(FS_BASE + 28)
69 #define REQ_NEWNODE	(FS_BASE + 29)
70 #define REQ_RDLINK	(FS_BASE + 30)
71 #define REQ_GETDENTS	(FS_BASE + 31)
72 #define REQ_PEEK	(FS_BASE + 32)
73 #define REQ_BPEEK	(FS_BASE + 33)
74 
75 #define NREQS			    34
76 
77 #define IS_FS_RQ(type) (((type) & ~0xff) == FS_BASE)
78 
79 #define TRNS_GET_ID(t)		((t) & 0xFFFF)
80 #define TRNS_ADD_ID(t,id)	(((t) << 16) | ((id) & 0xFFFF))
81 #define TRNS_DEL_ID(t)		((short)((t) >> 16))
82 
83 #endif
84 
85