#ifndef __MINIX_VFSIF_H #define __MINIX_VFSIF_H #include #include /* VFS/FS request fields */ #define REQ_ACTIME m9_l2 #define REQ_COUNT m9_l2 #define REQ_DEV m9_l5 #define REQ_DEV2 m9_l1 #define REQ_DIR_INO m9_l3 #define REQ_DRIVER_E m9_l2 #define REQ_FLAGS m9_s3 #define REQ_GID m9_s1 #define REQ_GRANT m9_l2 #define REQ_GRANT2 m9_l1 #define REQ_GRANT3 m9_l3 #define REQ_INODE_NR m9_l1 #define REQ_MEM_SIZE m9_l5 #define REQ_MODE m9_s3 #define REQ_MODTIME m9_l3 #define REQ_NBYTES m9_l5 #define REQ_PATH_LEN m9_s2 #define REQ_PATH_SIZE m9_l5 #define REQ_REN_GRANT_NEW m9_l1 #define REQ_REN_GRANT_OLD m9_l2 #define REQ_REN_LEN_NEW m9_s2 #define REQ_REN_LEN_OLD m9_s1 #define REQ_REN_NEW_DIR m9_l4 #define REQ_REN_OLD_DIR m9_l3 #define REQ_ROOT_INO m9_l4 #define REQ_SEEK_POS_HI m9_l3 #define REQ_SEEK_POS_LO m9_l4 #define REQ_TRC_END_HI m9_l4 #define REQ_TRC_END_LO m9_l5 #define REQ_TRC_START_HI m9_l2 #define REQ_TRC_START_LO m9_l3 #define REQ_UCRED_SIZE m9_s4 #define REQ_UID m9_s4 /* VFS/FS reply fields */ #define RES_DEV m9_l4 #define RES_GID m9_s1 #define RES_INODE_NR m9_l1 #define RES_FILE_SIZE_HI m9_l2 #define RES_FILE_SIZE_LO m9_l3 #define RES_MODE m9_s2 #define RES_NBYTES m9_l5 #define RES_OFFSET m9_s2 #define RES_SEEK_POS_HI m9_l3 #define RES_SEEK_POS_LO m9_l4 #define RES_SYMLOOP m9_s3 #define RES_UID m9_s4 /* VFS/FS flags */ #define REQ_RDONLY 001 #define REQ_ISROOT 002 #define PATH_NOFLAGS 000 #define PATH_RET_SYMLINK 010 /* Return a symlink object (i.e. * do not continue with the contents * of the symlink if it is the last * component in a path). */ #define PATH_GET_UCRED 020 /* Request provides a grant ID in m9_l1 * and struct ucred size in m9_s4 (as * opposed to a REQ_UID). */ /* VFS/FS error messages */ #define EENTERMOUNT (-301) #define ELEAVEMOUNT (-302) #define ESYMLINK (-303) /* VFS/FS types */ /* User credential structure */ typedef struct { uid_t vu_uid; gid_t vu_gid; int vu_ngroups; gid_t vu_sgroups[NGROUPS_MAX]; } vfs_ucred_t; /* Request numbers */ #define REQ_GETNODE (VFS_BASE + 1) /* Should be removed */ #define REQ_PUTNODE (VFS_BASE + 2) #define REQ_SLINK (VFS_BASE + 3) #define REQ_FTRUNC (VFS_BASE + 4) #define REQ_CHOWN (VFS_BASE + 5) #define REQ_CHMOD (VFS_BASE + 6) #define REQ_INHIBREAD (VFS_BASE + 7) #define REQ_STAT (VFS_BASE + 8) #define REQ_UTIME (VFS_BASE + 9) #define REQ_FSTATFS (VFS_BASE + 10) #define REQ_BREAD (VFS_BASE + 11) #define REQ_BWRITE (VFS_BASE + 12) #define REQ_UNLINK (VFS_BASE + 13) #define REQ_RMDIR (VFS_BASE + 14) #define REQ_UNMOUNT (VFS_BASE + 15) #define REQ_SYNC (VFS_BASE + 16) #define REQ_NEW_DRIVER (VFS_BASE + 17) #define REQ_FLUSH (VFS_BASE + 18) #define REQ_READ (VFS_BASE + 19) #define REQ_WRITE (VFS_BASE + 20) #define REQ_MKNOD (VFS_BASE + 21) #define REQ_MKDIR (VFS_BASE + 22) #define REQ_CREATE (VFS_BASE + 23) #define REQ_LINK (VFS_BASE + 24) #define REQ_RENAME (VFS_BASE + 25) #define REQ_LOOKUP (VFS_BASE + 26) #define REQ_MOUNTPOINT (VFS_BASE + 27) #define REQ_READSUPER (VFS_BASE + 28) #define REQ_NEWNODE (VFS_BASE + 29) #define REQ_RDLINK (VFS_BASE + 30) #define REQ_GETDENTS (VFS_BASE + 31) #define NREQS 32 #endif