1/**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 **************************************************************************** 11 ****************************************************************************/ 12#ifndef _CODA_HEADER_ 13#define _CODA_HEADER_ 14 15#if defined(__NetBSD__) || (defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL) 16#include <sys/types.h> 17#endif 18 19#ifndef CODA_MAXSYMLINKS 20#define CODA_MAXSYMLINKS 10 21#endif 22 23#if defined(DJGPP) || defined(__CYGWIN32__) 24#ifdef KERNEL 25typedef unsigned long u_long; 26typedef unsigned int u_int; 27typedef unsigned short u_short; 28typedef u_long ino_t; 29typedef u_long dev_t; 30typedef void * caddr_t; 31#ifdef DOS 32typedef unsigned __int64 u_quad_t; 33#else 34typedef unsigned long long u_quad_t; 35#endif 36 37#define inline 38 39struct timespec { 40 long ts_sec; 41 long ts_nsec; 42}; 43#else 44#include <sys/time.h> 45typedef unsigned long long u_quad_t; 46#endif 47#endif 48 49#ifdef __linux__ 50#include <linux/time.h> 51#define cdev_t u_quad_t 52#if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2) 53#define _UQUAD_T_ 1 54typedef unsigned long long u_quad_t; 55#endif 56#else 57#define cdev_t dev_t 58#endif 59 60#ifdef __CYGWIN32__ 61struct timespec { 62 time_t tv_sec; 63 long tv_nsec; 64}; 65#endif 66 67#ifndef __BIT_TYPES_DEFINED__ 68#define __BIT_TYPES_DEFINED__ 69typedef signed char int8_t; 70typedef unsigned char u_int8_t; 71typedef short int16_t; 72typedef unsigned short u_int16_t; 73typedef int int32_t; 74typedef unsigned int u_int32_t; 75#endif 76 77#define CODA_MAXNAMLEN 255 78#define CODA_MAXPATHLEN 1024 79#define CODA_MAXSYMLINK 10 80 81#define C_O_READ 0x001 82#define C_O_WRITE 0x002 83#define C_O_TRUNC 0x010 84#define C_O_EXCL 0x100 85#define C_O_CREAT 0x200 86 87#define C_M_READ 00400 88#define C_M_WRITE 00200 89 90#define C_A_C_OK 8 91#define C_A_R_OK 4 92#define C_A_W_OK 2 93#define C_A_X_OK 1 94#define C_A_F_OK 0 95 96#ifndef _VENUS_DIRENT_T_ 97#define _VENUS_DIRENT_T_ 1 98struct venus_dirent { 99 u_int32_t d_fileno; 100 u_int16_t d_reclen; 101 u_int8_t d_type; 102 u_int8_t d_namlen; 103 char d_name[CODA_MAXNAMLEN + 1]; 104}; 105#undef DIRSIZ 106#define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3)) 107 108#define CDT_UNKNOWN 0 109#define CDT_FIFO 1 110#define CDT_CHR 2 111#define CDT_DIR 4 112#define CDT_BLK 6 113#define CDT_REG 8 114#define CDT_LNK 10 115#define CDT_SOCK 12 116#define CDT_WHT 14 117 118#define IFTOCDT(mode) (((mode) & 0170000) >> 12) 119#define CDTTOIF(dirtype) ((dirtype) << 12) 120 121#endif 122 123#ifndef _VUID_T_ 124#define _VUID_T_ 125typedef u_int32_t vuid_t; 126typedef u_int32_t vgid_t; 127#endif 128 129struct CodaFid { 130 u_int32_t opaque[4]; 131}; 132 133#define coda_f2i(fid) (fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0) 134 135#ifndef _VENUS_VATTR_T_ 136#define _VENUS_VATTR_T_ 137 138enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD }; 139 140struct coda_vattr { 141 long va_type; 142 u_short va_mode; 143 short va_nlink; 144 vuid_t va_uid; 145 vgid_t va_gid; 146 long va_fileid; 147 u_quad_t va_size; 148 long va_blocksize; 149 struct timespec va_atime; 150 struct timespec va_mtime; 151 struct timespec va_ctime; 152 u_long va_gen; 153 u_long va_flags; 154 cdev_t va_rdev; 155 u_quad_t va_bytes; 156 u_quad_t va_filerev; 157}; 158 159#endif 160 161struct coda_statfs { 162 int32_t f_blocks; 163 int32_t f_bfree; 164 int32_t f_bavail; 165 int32_t f_files; 166 int32_t f_ffree; 167}; 168 169#define CODA_ROOT 2 170#define CODA_OPEN_BY_FD 3 171#define CODA_OPEN 4 172#define CODA_CLOSE 5 173#define CODA_IOCTL 6 174#define CODA_GETATTR 7 175#define CODA_SETATTR 8 176#define CODA_ACCESS 9 177#define CODA_LOOKUP 10 178#define CODA_CREATE 11 179#define CODA_REMOVE 12 180#define CODA_LINK 13 181#define CODA_RENAME 14 182#define CODA_MKDIR 15 183#define CODA_RMDIR 16 184#define CODA_SYMLINK 18 185#define CODA_READLINK 19 186#define CODA_FSYNC 20 187#define CODA_VGET 22 188#define CODA_SIGNAL 23 189#define CODA_REPLACE 24 190#define CODA_FLUSH 25 191#define CODA_PURGEUSER 26 192#define CODA_ZAPFILE 27 193#define CODA_ZAPDIR 28 194#define CODA_PURGEFID 30 195#define CODA_OPEN_BY_PATH 31 196#define CODA_RESOLVE 32 197#define CODA_REINTEGRATE 33 198#define CODA_STATFS 34 199#define CODA_STORE 35 200#define CODA_RELEASE 36 201#define CODA_NCALLS 37 202 203#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID) 204 205#define VC_MAXDATASIZE 8192 206#define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) + VC_MAXDATASIZE 207 208#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t) 209 210#define CODA_KERNEL_VERSION 3 211 212struct coda_in_hdr { 213 u_int32_t opcode; 214 u_int32_t unique; 215 pid_t pid; 216 pid_t pgid; 217 vuid_t uid; 218}; 219 220struct coda_out_hdr { 221 u_int32_t opcode; 222 u_int32_t unique; 223 u_int32_t result; 224}; 225 226struct coda_root_out { 227 struct coda_out_hdr oh; 228 struct CodaFid VFid; 229}; 230 231struct coda_root_in { 232 struct coda_in_hdr in; 233}; 234 235struct coda_open_in { 236 struct coda_in_hdr ih; 237 struct CodaFid VFid; 238 int flags; 239}; 240 241struct coda_open_out { 242 struct coda_out_hdr oh; 243 cdev_t dev; 244 ino_t inode; 245}; 246 247struct coda_store_in { 248 struct coda_in_hdr ih; 249 struct CodaFid VFid; 250 int flags; 251}; 252 253struct coda_store_out { 254 struct coda_out_hdr out; 255}; 256 257struct coda_release_in { 258 struct coda_in_hdr ih; 259 struct CodaFid VFid; 260 int flags; 261}; 262 263struct coda_release_out { 264 struct coda_out_hdr out; 265}; 266 267struct coda_close_in { 268 struct coda_in_hdr ih; 269 struct CodaFid VFid; 270 int flags; 271}; 272 273struct coda_close_out { 274 struct coda_out_hdr out; 275}; 276 277struct coda_ioctl_in { 278 struct coda_in_hdr ih; 279 struct CodaFid VFid; 280 int cmd; 281 int len; 282 int rwflag; 283 char *data; 284}; 285 286struct coda_ioctl_out { 287 struct coda_out_hdr oh; 288 int len; 289 caddr_t data; 290}; 291 292struct coda_getattr_in { 293 struct coda_in_hdr ih; 294 struct CodaFid VFid; 295}; 296 297struct coda_getattr_out { 298 struct coda_out_hdr oh; 299 struct coda_vattr attr; 300}; 301 302struct coda_setattr_in { 303 struct coda_in_hdr ih; 304 struct CodaFid VFid; 305 struct coda_vattr attr; 306}; 307 308struct coda_setattr_out { 309 struct coda_out_hdr out; 310}; 311 312struct coda_access_in { 313 struct coda_in_hdr ih; 314 struct CodaFid VFid; 315 int flags; 316}; 317 318struct coda_access_out { 319 struct coda_out_hdr out; 320}; 321 322#define CLU_CASE_SENSITIVE 0x01 323#define CLU_CASE_INSENSITIVE 0x02 324 325struct coda_lookup_in { 326 struct coda_in_hdr ih; 327 struct CodaFid VFid; 328 int name; 329 int flags; 330}; 331 332struct coda_lookup_out { 333 struct coda_out_hdr oh; 334 struct CodaFid VFid; 335 int vtype; 336}; 337 338struct coda_create_in { 339 struct coda_in_hdr ih; 340 struct CodaFid VFid; 341 struct coda_vattr attr; 342 int excl; 343 int mode; 344 int name; 345}; 346 347struct coda_create_out { 348 struct coda_out_hdr oh; 349 struct CodaFid VFid; 350 struct coda_vattr attr; 351}; 352 353struct coda_remove_in { 354 struct coda_in_hdr ih; 355 struct CodaFid VFid; 356 int name; 357}; 358 359struct coda_remove_out { 360 struct coda_out_hdr out; 361}; 362 363struct coda_link_in { 364 struct coda_in_hdr ih; 365 struct CodaFid sourceFid; 366 struct CodaFid destFid; 367 int tname; 368}; 369 370struct coda_link_out { 371 struct coda_out_hdr out; 372}; 373 374struct coda_rename_in { 375 struct coda_in_hdr ih; 376 struct CodaFid sourceFid; 377 int srcname; 378 struct CodaFid destFid; 379 int destname; 380}; 381 382struct coda_rename_out { 383 struct coda_out_hdr out; 384}; 385 386struct coda_mkdir_in { 387 struct coda_in_hdr ih; 388 struct CodaFid VFid; 389 struct coda_vattr attr; 390 int name; 391}; 392 393struct coda_mkdir_out { 394 struct coda_out_hdr oh; 395 struct CodaFid VFid; 396 struct coda_vattr attr; 397}; 398 399struct coda_rmdir_in { 400 struct coda_in_hdr ih; 401 struct CodaFid VFid; 402 int name; 403}; 404 405struct coda_rmdir_out { 406 struct coda_out_hdr out; 407}; 408 409struct coda_symlink_in { 410 struct coda_in_hdr ih; 411 struct CodaFid VFid; 412 int srcname; 413 struct coda_vattr attr; 414 int tname; 415}; 416 417struct coda_symlink_out { 418 struct coda_out_hdr out; 419}; 420 421struct coda_readlink_in { 422 struct coda_in_hdr ih; 423 struct CodaFid VFid; 424}; 425 426struct coda_readlink_out { 427 struct coda_out_hdr oh; 428 int count; 429 caddr_t data; 430}; 431 432struct coda_fsync_in { 433 struct coda_in_hdr ih; 434 struct CodaFid VFid; 435}; 436 437struct coda_fsync_out { 438 struct coda_out_hdr out; 439}; 440 441struct coda_vget_in { 442 struct coda_in_hdr ih; 443 struct CodaFid VFid; 444}; 445 446struct coda_vget_out { 447 struct coda_out_hdr oh; 448 struct CodaFid VFid; 449 int vtype; 450}; 451 452struct coda_purgeuser_out { 453 struct coda_out_hdr oh; 454 vuid_t uid; 455}; 456 457struct coda_zapfile_out { 458 struct coda_out_hdr oh; 459 struct CodaFid CodaFid; 460}; 461 462struct coda_zapdir_out { 463 struct coda_out_hdr oh; 464 struct CodaFid CodaFid; 465}; 466 467struct coda_purgefid_out { 468 struct coda_out_hdr oh; 469 struct CodaFid CodaFid; 470}; 471 472struct coda_replace_out { 473 struct coda_out_hdr oh; 474 struct CodaFid NewFid; 475 struct CodaFid OldFid; 476}; 477 478struct coda_open_by_fd_in { 479 struct coda_in_hdr ih; 480 struct CodaFid VFid; 481 int flags; 482}; 483 484struct coda_open_by_fd_out { 485 struct coda_out_hdr oh; 486 int fd; 487 488}; 489 490struct coda_open_by_path_in { 491 struct coda_in_hdr ih; 492 struct CodaFid VFid; 493 int flags; 494}; 495 496struct coda_open_by_path_out { 497 struct coda_out_hdr oh; 498 int path; 499}; 500 501struct coda_statfs_in { 502 struct coda_in_hdr in; 503}; 504 505struct coda_statfs_out { 506 struct coda_out_hdr oh; 507 struct coda_statfs stat; 508}; 509 510#define CODA_NOCACHE 0x80000000 511 512union inputArgs { 513 struct coda_in_hdr ih; 514 struct coda_open_in coda_open; 515 struct coda_store_in coda_store; 516 struct coda_release_in coda_release; 517 struct coda_close_in coda_close; 518 struct coda_ioctl_in coda_ioctl; 519 struct coda_getattr_in coda_getattr; 520 struct coda_setattr_in coda_setattr; 521 struct coda_access_in coda_access; 522 struct coda_lookup_in coda_lookup; 523 struct coda_create_in coda_create; 524 struct coda_remove_in coda_remove; 525 struct coda_link_in coda_link; 526 struct coda_rename_in coda_rename; 527 struct coda_mkdir_in coda_mkdir; 528 struct coda_rmdir_in coda_rmdir; 529 struct coda_symlink_in coda_symlink; 530 struct coda_readlink_in coda_readlink; 531 struct coda_fsync_in coda_fsync; 532 struct coda_vget_in coda_vget; 533 struct coda_open_by_fd_in coda_open_by_fd; 534 struct coda_open_by_path_in coda_open_by_path; 535 struct coda_statfs_in coda_statfs; 536}; 537 538union outputArgs { 539 struct coda_out_hdr oh; 540 struct coda_root_out coda_root; 541 struct coda_open_out coda_open; 542 struct coda_ioctl_out coda_ioctl; 543 struct coda_getattr_out coda_getattr; 544 struct coda_lookup_out coda_lookup; 545 struct coda_create_out coda_create; 546 struct coda_mkdir_out coda_mkdir; 547 struct coda_readlink_out coda_readlink; 548 struct coda_vget_out coda_vget; 549 struct coda_purgeuser_out coda_purgeuser; 550 struct coda_zapfile_out coda_zapfile; 551 struct coda_zapdir_out coda_zapdir; 552 struct coda_purgefid_out coda_purgefid; 553 struct coda_replace_out coda_replace; 554 struct coda_open_by_fd_out coda_open_by_fd; 555 struct coda_open_by_path_out coda_open_by_path; 556 struct coda_statfs_out coda_statfs; 557}; 558 559union coda_downcalls { 560 561 struct coda_purgeuser_out purgeuser; 562 struct coda_zapfile_out zapfile; 563 struct coda_zapdir_out zapdir; 564 struct coda_purgefid_out purgefid; 565 struct coda_replace_out replace; 566}; 567 568#define PIOCPARM_MASK 0x0000ffff 569struct ViceIoctl { 570 void __user *in; 571 void __user *out; 572 u_short in_size; 573 u_short out_size; 574}; 575 576struct PioctlData { 577 const char __user *path; 578 int follow; 579 struct ViceIoctl vi; 580}; 581 582#define CODA_CONTROL ".CONTROL" 583#define CODA_CONTROLLEN 8 584#define CTL_INO -1 585 586#define CODA_MOUNT_VERSION 1 587 588struct coda_mount_data { 589 int version; 590 int fd; 591}; 592 593#endif 594 595