text: /****************************************************************************
   ****************************************************************************
   ***
   ***   This header was automatically generated from a Linux kernel header
   ***   of the same name, to make information necessary for userspace to
   ***   call into the kernel available to libc.  It contains only constants,
   ***   structures, and macros generated from the original header, and thus,
   ***   contains no copyrightable information.
   ***
   ****************************************************************************
   ****************************************************************************/
  #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
  
  #ifdef __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 __user *in;
   void __user *out;
   u_short in_size;
   u_short out_size;
  };
  
  struct PioctlData {
   const char __user *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
  
  