1 #ifndef __LIB9_H 2 #define __LIB9_H 3 #if !defined(_RESEARCH_SOURCE) && !defined(_PLAN9_SOURCE) 4 This header file is an extension to ANSI/POSIX 5 #endif 6 #pragma lib "/$M/lib/ape/lib9.a" 7 8 #include <u.h> /* ick; need Rune defined below */ 9 10 #define MORDER 0x0003 /* mask for bits defining order of mounting */ 11 #define MREPL 0x0000 /* mount replaces object */ 12 #define MBEFORE 0x0001 /* mount goes before others in union directory */ 13 #define MAFTER 0x0002 /* mount goes after others in union directory */ 14 #define MCREATE 0x0004 /* permit creation in mounted directory */ 15 #define MRECOV 0x0008 /* perform recovery if mount channel is lost */ 16 #define MCACHE 0x0010 /* cache some data */ 17 #define MMASK 0x0007 /* all bits on */ 18 19 #define FORKPG 1 20 #define FORKEG 2 21 #define FORKFD 4 22 23 #define SG_RONLY 0040 /* read only */ 24 #define SG_CEXEC 0100 /* detach on exec */ 25 26 enum 27 { 28 RFNAMEG = (1<<0), 29 RFENVG = (1<<1), 30 RFFDG = (1<<2), 31 RFNOTEG = (1<<3), 32 RFPROC = (1<<4), 33 RFMEM = (1<<5), 34 RFNOWAIT = (1<<6), 35 RFCNAMEG = (1<<10), 36 RFCENVG = (1<<11), 37 RFCFDG = (1<<12), 38 RFREND = (1<<13) 39 }; 40 41 extern char *argv0; 42 #define ARGBEGIN for((argv0||(argv0=*argv)),argv++,argc--;\ 43 argv[0] && argv[0][0]=='-' && argv[0][1];\ 44 argc--, argv++) {\ 45 char *_args, *_argt;\ 46 Rune _argc;\ 47 _args = &argv[0][1];\ 48 if(_args[0]=='-' && _args[1]==0){\ 49 argc--; argv++; break;\ 50 }\ 51 _argc = 0;\ 52 while(*_args && (_args += chartorune(&_argc, _args)))\ 53 switch(_argc) 54 #define ARGEND SET(_argt);USED(_argt,_argc,_args);}USED(argv, argc); 55 #define ARGF() (_argt=_args, _args="",\ 56 (*_argt? _argt: argv[1]? (argc--, *++argv): 0)) 57 #define EARGF(x) (_argt=_args, _args="",\ 58 (*_argt? _argt: argv[1]? (argc--, *++argv): ((x), abort(), (char*)0))) 59 60 #define ARGC() _argc 61 62 extern int errstr(char*, unsigned int); 63 extern int bind(char*, char*, int); 64 extern int mount(int, int, char*, int, char*); 65 extern int unmount(char*, char*); 66 extern int rfork(int); 67 extern int segattach(int, char*, void*, unsigned long); 68 extern int segbrk(void*, void*); 69 extern int segdetach(void*); 70 extern int segflush(void*, unsigned long); 71 extern int segfree(void*, unsigned long); 72 extern unsigned long rendezvous(unsigned long, unsigned long); 73 extern unsigned long getfcr(void); 74 extern unsigned long getfsr(void); 75 extern void setfcr(unsigned long); 76 extern void setfsr(unsigned long); 77 78 #endif 79