]> git.lizzy.rs Git - plan9front.git/blob - sys/include/ape/lib9.h
libc: use usize for sbrk() increment
[plan9front.git] / sys / include / ape / lib9.h
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  void*   segattach(int, char*, void*, unsigned long);
68 extern  void*   segbrk(void*, void*);
69 extern  int     segdetach(void*);
70 extern  int     segflush(void*, unsigned long);
71 extern  int     segfree(void*, unsigned long);
72 extern  void*   rendezvous(void*, void*);
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 extern  int     fd2path(int, char*, int);
78
79 #endif