123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736 |
- #ifndef _CODA_HEADER_
- #define _CODA_HEADER_
- #if defined(__NetBSD__) || \
- ((defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL))
- #include <sys/types.h>
- #endif
- #ifndef CODA_MAXSYMLINKS
- #define CODA_MAXSYMLINKS 10
- #endif
- #if defined(DJGPP) || defined(__CYGWIN32__)
- #ifdef KERNEL
- typedef unsigned long u_long;
- typedef unsigned int u_int;
- typedef unsigned short u_short;
- typedef u_long ino_t;
- typedef u_long dev_t;
- typedef void * caddr_t;
- #ifdef DOS
- typedef unsigned __int64 u_quad_t;
- #else
- typedef unsigned long long u_quad_t;
- #endif
- #define __inline__
- struct timespec {
- long ts_sec;
- long ts_nsec;
- };
- #else
- #include <sys/time.h>
- typedef unsigned long long u_quad_t;
- #endif
- #endif
- #if defined(__linux__)
- #include <linux/time.h>
- #define cdev_t u_quad_t
- #if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
- #define _UQUAD_T_ 1
- typedef unsigned long long u_quad_t;
- #endif
- #else
- #define cdev_t dev_t
- #endif
- #ifdef __CYGWIN32__
- struct timespec {
- time_t tv_sec;
- long tv_nsec;
- };
- #endif
- #ifndef __BIT_TYPES_DEFINED__
- #define __BIT_TYPES_DEFINED__
- typedef signed char int8_t;
- typedef unsigned char u_int8_t;
- typedef short int16_t;
- typedef unsigned short u_int16_t;
- typedef int int32_t;
- typedef unsigned int u_int32_t;
- #endif
- #define CODA_MAXNAMLEN 255
- #define CODA_MAXPATHLEN 1024
- #define CODA_MAXSYMLINK 10
- #define C_O_READ 0x001
- #define C_O_WRITE 0x002
- #define C_O_TRUNC 0x010
- #define C_O_EXCL 0x100
- #define C_O_CREAT 0x200
-
- #define C_M_READ 00400
- #define C_M_WRITE 00200
- #define C_A_C_OK 8
- #define C_A_R_OK 4
- #define C_A_W_OK 2
- #define C_A_X_OK 1
- #define C_A_F_OK 0
- #ifndef _VENUS_DIRENT_T_
- #define _VENUS_DIRENT_T_ 1
- struct venus_dirent {
- u_int32_t d_fileno;
- u_int16_t d_reclen;
- u_int8_t d_type;
- u_int8_t d_namlen;
- char d_name[CODA_MAXNAMLEN + 1];
- };
- #undef DIRSIZ
- #define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + \
- (((dp)->d_namlen+1 + 3) &~ 3))
- #define CDT_UNKNOWN 0
- #define CDT_FIFO 1
- #define CDT_CHR 2
- #define CDT_DIR 4
- #define CDT_BLK 6
- #define CDT_REG 8
- #define CDT_LNK 10
- #define CDT_SOCK 12
- #define CDT_WHT 14
- #define IFTOCDT(mode) (((mode) & 0170000) >> 12)
- #define CDTTOIF(dirtype) ((dirtype) << 12)
- #endif
- #ifndef _VUID_T_
- #define _VUID_T_
- typedef u_int32_t vuid_t;
- typedef u_int32_t vgid_t;
- #endif
- struct CodaFid {
- u_int32_t opaque[4];
- };
- #define coda_f2i(fid)\
- (fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
- #ifndef _VENUS_VATTR_T_
- #define _VENUS_VATTR_T_
- enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
- struct coda_vattr {
- long va_type;
- u_short va_mode;
- short va_nlink;
- vuid_t va_uid;
- vgid_t va_gid;
- long va_fileid;
- u_quad_t va_size;
- long va_blocksize;
- struct timespec va_atime;
- struct timespec va_mtime;
- struct timespec va_ctime;
- u_long va_gen;
- u_long va_flags;
- cdev_t va_rdev;
- u_quad_t va_bytes;
- u_quad_t va_filerev;
- };
- #endif
- struct coda_statfs {
- int32_t f_blocks;
- int32_t f_bfree;
- int32_t f_bavail;
- int32_t f_files;
- int32_t f_ffree;
- };
- #define CODA_ROOT 2
- #define CODA_OPEN_BY_FD 3
- #define CODA_OPEN 4
- #define CODA_CLOSE 5
- #define CODA_IOCTL 6
- #define CODA_GETATTR 7
- #define CODA_SETATTR 8
- #define CODA_ACCESS 9
- #define CODA_LOOKUP 10
- #define CODA_CREATE 11
- #define CODA_REMOVE 12
- #define CODA_LINK 13
- #define CODA_RENAME 14
- #define CODA_MKDIR 15
- #define CODA_RMDIR 16
- #define CODA_SYMLINK 18
- #define CODA_READLINK 19
- #define CODA_FSYNC 20
- #define CODA_VGET 22
- #define CODA_SIGNAL 23
- #define CODA_REPLACE 24
- #define CODA_FLUSH 25
- #define CODA_PURGEUSER 26
- #define CODA_ZAPFILE 27
- #define CODA_ZAPDIR 28
- #define CODA_PURGEFID 30
- #define CODA_OPEN_BY_PATH 31
- #define CODA_RESOLVE 32
- #define CODA_REINTEGRATE 33
- #define CODA_STATFS 34
- #define CODA_STORE 35
- #define CODA_RELEASE 36
- #define CODA_NCALLS 37
- #define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
- #define VC_MAXDATASIZE 8192
- #define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) +\
- VC_MAXDATASIZE
- #define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
- #define CODA_KERNEL_VERSION 3
- struct coda_in_hdr {
- u_int32_t opcode;
- u_int32_t unique;
- pid_t pid;
- pid_t pgid;
- vuid_t uid;
- };
- struct coda_out_hdr {
- u_int32_t opcode;
- u_int32_t unique;
- u_int32_t result;
- };
- struct coda_root_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- };
- struct coda_root_in {
- struct coda_in_hdr in;
- };
- struct coda_open_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_open_out {
- struct coda_out_hdr oh;
- cdev_t dev;
- ino_t inode;
- };
- struct coda_store_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_store_out {
- struct coda_out_hdr out;
- };
- struct coda_release_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_release_out {
- struct coda_out_hdr out;
- };
- struct coda_close_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_close_out {
- struct coda_out_hdr out;
- };
- struct coda_ioctl_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int cmd;
- int len;
- int rwflag;
- char *data;
- };
- struct coda_ioctl_out {
- struct coda_out_hdr oh;
- int len;
- caddr_t data;
- };
- struct coda_getattr_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- };
- struct coda_getattr_out {
- struct coda_out_hdr oh;
- struct coda_vattr attr;
- };
- struct coda_setattr_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- struct coda_vattr attr;
- };
- struct coda_setattr_out {
- struct coda_out_hdr out;
- };
- struct coda_access_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_access_out {
- struct coda_out_hdr out;
- };
- #define CLU_CASE_SENSITIVE 0x01
- #define CLU_CASE_INSENSITIVE 0x02
- struct coda_lookup_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int name;
- int flags;
- };
- struct coda_lookup_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- int vtype;
- };
- struct coda_create_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- struct coda_vattr attr;
- int excl;
- int mode;
- int name;
- };
- struct coda_create_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- struct coda_vattr attr;
- };
- struct coda_remove_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int name;
- };
- struct coda_remove_out {
- struct coda_out_hdr out;
- };
- struct coda_link_in {
- struct coda_in_hdr ih;
- struct CodaFid sourceFid;
- struct CodaFid destFid;
- int tname;
- };
- struct coda_link_out {
- struct coda_out_hdr out;
- };
- struct coda_rename_in {
- struct coda_in_hdr ih;
- struct CodaFid sourceFid;
- int srcname;
- struct CodaFid destFid;
- int destname;
- };
- struct coda_rename_out {
- struct coda_out_hdr out;
- };
- struct coda_mkdir_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- struct coda_vattr attr;
- int name;
- };
- struct coda_mkdir_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- struct coda_vattr attr;
- };
- struct coda_rmdir_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int name;
- };
- struct coda_rmdir_out {
- struct coda_out_hdr out;
- };
- struct coda_symlink_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int srcname;
- struct coda_vattr attr;
- int tname;
- };
- struct coda_symlink_out {
- struct coda_out_hdr out;
- };
- struct coda_readlink_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- };
- struct coda_readlink_out {
- struct coda_out_hdr oh;
- int count;
- caddr_t data;
- };
- struct coda_fsync_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- };
- struct coda_fsync_out {
- struct coda_out_hdr out;
- };
- struct coda_vget_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- };
- struct coda_vget_out {
- struct coda_out_hdr oh;
- struct CodaFid VFid;
- int vtype;
- };
- struct coda_purgeuser_out {
- struct coda_out_hdr oh;
- vuid_t uid;
- };
- struct coda_zapfile_out {
- struct coda_out_hdr oh;
- struct CodaFid CodaFid;
- };
-
- struct coda_zapdir_out {
- struct coda_out_hdr oh;
- struct CodaFid CodaFid;
- };
-
- struct coda_purgefid_out {
- struct coda_out_hdr oh;
- struct CodaFid CodaFid;
- };
-
- struct coda_replace_out {
- struct coda_out_hdr oh;
- struct CodaFid NewFid;
- struct CodaFid OldFid;
- };
- struct coda_open_by_fd_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_open_by_fd_out {
- struct coda_out_hdr oh;
- int fd;
- };
- struct coda_open_by_path_in {
- struct coda_in_hdr ih;
- struct CodaFid VFid;
- int flags;
- };
- struct coda_open_by_path_out {
- struct coda_out_hdr oh;
- int path;
- };
- struct coda_statfs_in {
- struct coda_in_hdr in;
- };
- struct coda_statfs_out {
- struct coda_out_hdr oh;
- struct coda_statfs stat;
- };
- #define CODA_NOCACHE 0x80000000
- union inputArgs {
- struct coda_in_hdr ih;
- struct coda_open_in coda_open;
- struct coda_store_in coda_store;
- struct coda_release_in coda_release;
- struct coda_close_in coda_close;
- struct coda_ioctl_in coda_ioctl;
- struct coda_getattr_in coda_getattr;
- struct coda_setattr_in coda_setattr;
- struct coda_access_in coda_access;
- struct coda_lookup_in coda_lookup;
- struct coda_create_in coda_create;
- struct coda_remove_in coda_remove;
- struct coda_link_in coda_link;
- struct coda_rename_in coda_rename;
- struct coda_mkdir_in coda_mkdir;
- struct coda_rmdir_in coda_rmdir;
- struct coda_symlink_in coda_symlink;
- struct coda_readlink_in coda_readlink;
- struct coda_fsync_in coda_fsync;
- struct coda_vget_in coda_vget;
- struct coda_open_by_fd_in coda_open_by_fd;
- struct coda_open_by_path_in coda_open_by_path;
- struct coda_statfs_in coda_statfs;
- };
- union outputArgs {
- struct coda_out_hdr oh;
- struct coda_root_out coda_root;
- struct coda_open_out coda_open;
- struct coda_ioctl_out coda_ioctl;
- struct coda_getattr_out coda_getattr;
- struct coda_lookup_out coda_lookup;
- struct coda_create_out coda_create;
- struct coda_mkdir_out coda_mkdir;
- struct coda_readlink_out coda_readlink;
- struct coda_vget_out coda_vget;
- struct coda_purgeuser_out coda_purgeuser;
- struct coda_zapfile_out coda_zapfile;
- struct coda_zapdir_out coda_zapdir;
- struct coda_purgefid_out coda_purgefid;
- struct coda_replace_out coda_replace;
- struct coda_open_by_fd_out coda_open_by_fd;
- struct coda_open_by_path_out coda_open_by_path;
- struct coda_statfs_out coda_statfs;
- };
- union coda_downcalls {
-
-
- struct coda_purgeuser_out purgeuser;
- struct coda_zapfile_out zapfile;
- struct coda_zapdir_out zapdir;
- struct coda_purgefid_out purgefid;
- struct coda_replace_out replace;
- };
- #define PIOCPARM_MASK 0x0000ffff
- struct ViceIoctl {
- void *in;
- void *out;
- u_short in_size;
- u_short out_size;
- };
- struct PioctlData {
- const char *path;
- int follow;
- struct ViceIoctl vi;
- };
- #define CODA_CONTROL ".CONTROL"
- #define CODA_CONTROLLEN 8
- #define CTL_INO -1
- #define CODA_MOUNT_VERSION 1
- struct coda_mount_data {
- int version;
- int fd;
- };
- #endif
|