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