| /* | |
| * This file is auto-generated. Modifications will be lost. | |
| * | |
| * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ | |
| * for more information. | |
| */ | |
| #ifndef _UAPI_CODA_HEADER_ | |
| #define _UAPI_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 | |
| #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 | |
| #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_timespec { | |
| int64_t tv_sec; | |
| long tv_nsec; | |
| }; | |
| 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 coda_timespec va_atime; | |
| struct coda_timespec va_mtime; | |
| struct coda_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_ACCESS_INTENT 37 | |
| #define CODA_NCALLS 38 | |
| #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 5 | |
| struct coda_in_hdr { | |
| u_int32_t opcode; | |
| u_int32_t unique; | |
| __kernel_pid_t pid; | |
| __kernel_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_ACCESS_TYPE_READ 1 | |
| #define CODA_ACCESS_TYPE_WRITE 2 | |
| #define CODA_ACCESS_TYPE_MMAP 3 | |
| #define CODA_ACCESS_TYPE_READ_FINISH 4 | |
| #define CODA_ACCESS_TYPE_WRITE_FINISH 5 | |
| struct coda_access_intent_in { | |
| struct coda_in_hdr ih; | |
| struct CodaFid VFid; | |
| int count; | |
| int pos; | |
| int type; | |
| }; | |
| struct coda_access_intent_out { | |
| struct coda_out_hdr out; | |
| }; | |
| #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; | |
| struct coda_access_intent_in coda_access_intent; | |
| }; | |
| 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 |