|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 4.0
3: * Copyright (c) 1982, 1992 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /*
7: * Segments.
8: */
9:
10: #ifndef SEG_H
11: #define SEG_H SEG_H
12:
13: #include <sys/types.h>
14:
15: /*
16: * Segment structure.
17: */
18: typedef struct seg {
19: struct seg * s_forw; /* Forward pointer */
20: struct seg * s_back; /* Backward pointer */
21: struct inode * s_ip; /* Inode pointer for shared text */
22: short s_flags; /* Flags */
23: short s_urefc; /* Reference count of segment */
24: short s_lrefc; /* Lock reference count */
25: #ifdef _I386
26: off_t s_size; /* Size in bytes */
27: cseg_t *s_vmem; /* page table address */
28: #else
29: faddr_t s_faddr; /* Memory access selector */
30: fsize_t s_size; /* Size in bytes */
31: paddr_t s_paddr; /* Physical base address */
32: #endif
33: daddr_t s_daddr; /* Disk base address */
34: } SEG;
35:
36: /*
37: * Flags (s_flags).
38: */
39: #define SFCORE 0x0001 /* Memory resident */
40: #define SFDOWN 0x0002 /* Segment grows downward */
41: #define SFSHRX 0x0004 /* Shared segment */
42: #define SFTEXT 0x0008 /* Text segment */
43: #define SFHIGH 0x0010 /* Text segment */
44: #define SFSYST 0x0020 /* System segment */
45:
46: /*
47: * Pseudo flags. (passed to salloc).
48: */
49: #define SFNSWP 0x4000 /* Don't swap */
50: #define SFNCLR 0x8000 /* Don't clear segment */
51:
52: #ifdef KERNEL
53: /*
54: * Functions.
55: */
56: extern SEG *iomapvp(); /* bio.c */
57: extern SEG *segdupl(); /* seg.c */
58: extern SEG *ssalloc(); /* seg.c */
59: extern SEG *salloc(); /* seg.c */
60: extern SEG *segsext(); /* seg.c */
61: extern SEG *segdupd(); /* seg.c */
62: extern SEG *sdalloc(); /* seg.c */
63: extern SEG *smalloc(); /* seg.c */
64: extern SEG *shalloc(); /* seg.c */
65: extern SEG *exaread(); /* exec.c */
66: extern SEG *exsread(); /* exec.c */
67: extern SEG *exstack(); /* exec.c */
68:
69: /*
70: * Global variables.
71: */
72: extern int sexflag; /* Swapper existant */
73: extern GATE seglink; /* Gate for s_forw and s_back */
74: extern SEG segswap; /* Segments reserved for the swapper */
75: extern SEG segmq; /* Memory segment queue */
76: extern SEG segdq; /* Segment disk queue */
77: extern SEG segiom; /* I/O memory segment */
78:
79: #endif
80:
81: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.