]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/5e/dat.h
webfs(4): document -d and -D flags
[plan9front.git] / sys / src / cmd / 5e / dat.h
1 typedef struct Process Process;
2 typedef struct Segment Segment;
3 typedef struct Fdtable Fdtable;
4 typedef struct Fd Fd;
5
6 enum {
7         STACKSIZE = 0x100000,
8         NAMEMAX = 27,
9         NNOTE = 5,
10         SEGNUM = 8,
11         Nfpregs = 16,
12
13         flN = 1<<31,
14         flZ = 1<<30,
15         flC = 1<<29,
16         flV = 1<<28,
17         FLAGS = flN | flZ | flC | flV,
18 };
19
20 enum {
21         SEGTEXT,
22         SEGDATA,
23         SEGBSS,
24         SEGSTACK,
25 };
26
27 struct Process {
28         Process *prev, *next;   /* linked list (for fs) */
29         int pid;
30         char name[NAMEMAX+1];   /* name for status file */
31         Ref *path;              /* Ref + string data */
32
33         Segment *S[SEGNUM];     /* memory */
34
35         u32int lladdr;          /* LL/SC emulation */
36         u32int llval;
37
38         u32int R[16];           /* general purpose registers / PC (R15) */
39         u32int CPSR;            /* status register */
40
41         u32int FPSR;
42         long double F[Nfpregs];
43
44         char errbuf[ERRMAX];
45         Fd *fd;                 /* bitmap of OCEXEC files */
46         
47         /* note handling */
48         u32int notehandler;
49         int innote;
50         jmp_buf notejmp;
51         char notes[ERRMAX][NNOTE];
52         long notein, noteout;
53 };
54
55 int vfp;
56
57 extern void **_privates;
58 extern int _nprivates;
59 #define P (*(Process**)_privates)
60 extern Ref nproc;
61 extern Process plist;
62 extern Lock plistlock;
63
64 enum {
65         SEGFLLOCK = 1,
66 };
67
68 struct Segment {
69         Ref;
70         int flags;
71         RWLock rw; /* lock for SEGFLLOCK segments */
72         u32int start, size;
73         void *data;
74         Ref *dref;
75 };
76
77 struct Fd {
78         RWLock;
79         Ref;
80         u8int *fds;
81         int nfds;
82 };
83
84 #define fulltrace 0
85 #define havesymbols 0
86 #define ultraverbose 0
87 #define systrace 0