|
|
1.1 root 1: /* cmap.h 2.1 1/5/80 */
2:
3: /*
4: * core map entry
5: *
6: * N.B.: sizeof (struct cmap) is well known in cmap.m
7: */
8: struct cmap
9: {
10: unsigned int c_next:14, /* index of next free list entry */
11: c_page:17, /* virtual page number in segment */
12: c_intrans:1, /* intransit bit */
13: c_prev:14, /* index of previous free list entry */
14: c_ndx:10, /* index of owner proc or text */
15: c_flag:8; /* flags */
16: };
17:
18: #define CMHEAD 0
19:
20: #ifdef KERNEL
21: extern struct cmap *cmap;
22: extern struct cmap *ecmap;
23: int firstfree, maxfree;
24: #endif
25:
26: /* bits defined in c_flag */
27:
28: #define MTEXT 0x01 /* belongs to shared text segment */
29: #define MDATA 0x02 /* belongs to data segment */
30: #define MSTACK 0x04 /* belongs to stack segment */
31: #define MSYS 0x08 /* allocated to u area */
32: #define MGONE 0x10 /* associated page has been released */
33: #define MFREE 0x20 /* on the free list */
34: #define MLOCK 0x40 /* locked for raw i/o or pagein */
35: #define MWANT 0x80 /* wanted */
36:
37: #define pgtocm(x) ((((x)-firstfree) / CLSIZE) + 1)
38: #define cmtopg(x) ((((x)-1) * CLSIZE) + firstfree)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.