2 |
- |
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
|