/****************************************************************************
 ****************************************************************************
 ***
 ***   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

