1 #define ERRLEN 64 2 #define NAMELEN 28 3 typedef 4 struct Waitmsg 5 { 6 char pid[12]; /* of loved one */ 7 char time[3*12]; /* of loved one & descendants */ 8 char msg[ERRLEN]; 9 } Waitmsg; 10 11 #define MORDER 0x0003 /* mask for bits defining order of mounting */ 12 #define MREPL 0x0000 /* mount replaces object */ 13 #define MBEFORE 0x0001 /* mount goes before others in union directory */ 14 #define MAFTER 0x0002 /* mount goes after others in union directory */ 15 #define MCREATE 0x0004 /* permit creation in mounted directory */ 16 #define MMASK 0x0007 /* all bits on */ 17 18 #define OREAD 0 /* open for read */ 19 #define OWRITE 1 /* write */ 20 #define ORDWR 2 /* read and write */ 21 #define OEXEC 3 /* execute, == read but check execute permission */ 22 #define OTRUNC 16 /* or'ed in (except for exec), truncate file first */ 23 #define OCEXEC 32 /* or'ed in, close on exec */ 24 #define ORCLOSE 64 /* or'ed in, remove on close */ 25 26 #define NCONT 0 /* continue after note */ 27 #define NDFLT 1 /* terminate after note */ 28 29 #define CHDIR 0x80000000 /* mode bit for directories */ 30 #define CHAPPEND 0x40000000 /* mode bit for append only files */ 31 #define CHEXCL 0x20000000 /* mode bit for exclusive use files */ 32 #define CHREAD 0x4 /* mode bit for read permission */ 33 #define CHWRITE 0x2 /* mode bit for write permission */ 34 #define CHEXEC 0x1 /* mode bit for execute permission */ 35 36 #define RFNAMEG (1<<0) /* arguments to rfork */ 37 #define RFENVG (1<<1) 38 #define RFFDG (1<<2) 39 #define RFNOTEG (1<<3) 40 #define RFPROC (1<<4) 41 #define RFMEM (1<<5) 42 #define RFNOWAIT (1<<6) 43 #define RFCNAMEG (1<<10) 44 #define RFCENVG (1<<11) 45 #define RFCFDG (1<<12) 46 #define RFREND (1<<13) 47 48 extern int _ALARM(unsigned long); 49 extern int _BIND(char*, char*, int); 50 extern int _CHDIR(char*); 51 extern int _CLOSE(int); 52 extern int _CREATE(char*, int, unsigned long); 53 extern int _DUP(int, int); 54 extern int _ERRSTR(char*); 55 extern int _EXEC(char*, char*[]); 56 extern void _EXITS(char *); 57 extern int _FSESSION(int, char*); 58 extern int _FSTAT(int, char*); 59 extern int _FWSTAT(int, char*); 60 extern int _MOUNT(int, char*, int, char*); 61 extern int _NOTED(int); 62 extern int _NOTIFY(int(*)(void*, char*)); 63 extern int _OPEN(char*, int); 64 extern int _PIPE(int*); 65 extern long _READ(int, void*, long); 66 extern int _REMOVE(char*); 67 extern int _RENDEZVOUS(unsigned long, unsigned long); 68 extern int _RFORK(int); 69 extern int _SEGATTACH(int, char*, void*, unsigned long); 70 extern int _SEGBRK(void*, void*); 71 extern int _SEGDETACH(void*); 72 extern int _SEGFLUSH(void*, unsigned long); 73 extern int _SEGFREE(void*, unsigned long); 74 extern long _SEEK(int, long, int); 75 extern int _SLEEP(long); 76 extern int _STAT(char*, char*); 77 extern int _WAIT(Waitmsg*); 78 extern long _WRITE(int, void*, long); 79 extern int _WSTAT(char*, char*); 80 81 extern int __open(char *, int, ...); 82 extern int __access(char *, int); 83 extern int __chdir(char *); 84 extern int __creat(char *, int); 85 extern int __link(char *, int); 86 extern int __stat(char *, struct stat *); 87 extern int __unlink(char *); 88