|
|
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: * /usr/include/sys/seg.h
8: *
9: * Segments.
10: *
11: * Revised: Mon May 24 15:50:18 1993 CDT
12: */
13:
14: #ifndef __SYS_SEG_H__
15: #define __SYS_SEG_H__
16:
17: #include <common/feature.h>
18: #include <common/__paddr.h>
19: #include <sys/types.h>
20: #include <sys/ksynch.h>
21:
22: #if ! __KERNEL__
23: # error You must be compiling the kernel to use this header
24: #endif
25:
26: /*
27: * NIGEL: for some reason the type "cseg_t" was in <sys/types.h>. It belongs
28: * here and in <sys/mmu.h> as much as it belongs anywhere.
29: */
30:
31: #ifndef __CSEG_T
32: #define __CSEG_T
33: typedef long cseg_t;
34: #endif
35:
36: /*
37: * Segment structure.
38: */
39: typedef struct seg {
40: struct seg * s_forw; /* Forward pointer */
41: struct seg * s_back; /* Backward pointer */
42: struct inode * s_ip; /* Inode pointer for shared text */
43: short s_flags; /* Flags */
44: short s_urefc; /* Reference count of segment */
45: short s_lrefc; /* Lock reference count */
46: #if _I386
47: off_t s_size; /* Size in bytes */
48: cseg_t *s_vmem; /* page table address */
49: #else
50: faddr_t s_faddr; /* Memory access selector */
51: fsize_t s_size; /* Size in bytes */
52: __paddr_t s_paddr; /* Physical base address */
53: #endif
54: daddr_t s_daddr; /* Disk base address */
55: } SEG;
56:
57: /*
58: * Flags (s_flags).
59: */
60: #define SFCORE 0x0001 /* Memory resident */
61: #define SFDOWN 0x0002 /* Segment grows downward */
62: #define SFSHRX 0x0004 /* Shared segment */
63: #define SFTEXT 0x0008 /* Text segment */
64: #define SFHIGH 0x0010 /* Text segment */
65: #define SFSYST 0x0020 /* System segment */
66:
67: /*
68: * Pseudo flags. (passed to salloc).
69: */
70: #define SFNSWP 0x4000 /* Don't swap */
71: #define SFNCLR 0x8000 /* Don't clear segment */
72:
73: /*
74: * Functions.
75: */
76: extern SEG *iomapvp(); /* bio.c */
77: extern SEG *segdupl(); /* seg.c */
78: extern SEG *ssalloc(); /* seg.c */
79: extern SEG *salloc(); /* seg.c */
80: extern SEG *segsext(); /* seg.c */
81: extern SEG *segdupd(); /* seg.c */
82: extern SEG *sdalloc(); /* seg.c */
83: extern SEG *smalloc(); /* seg.c */
84: extern SEG *shalloc(); /* seg.c */
85: extern SEG *exaread(); /* exec.c */
86: extern SEG *exsread(); /* exec.c */
87: extern SEG *exstack(); /* exec.c */
88:
89: /*
90: * Global variables.
91: */
92: extern int sexflag; /* Swapper existant */
93: extern GATE seglink; /* Gate for s_forw and s_back */
94: extern SEG segswap; /* Segments reserved for the swapper */
95: extern SEG segmq; /* Memory segment queue */
96: extern SEG segdq; /* Segment disk queue */
97: extern SEG segiom; /* I/O memory segment */
98:
99: /*
100: * Open segment structure.
101: */
102: typedef struct sr {
103: int sr_flag; /* Flags for this reference */
104: caddr_t sr_base; /* Virtual address base */
105: #if _I386
106: off_t sr_size; /* Mapped in window size */
107: #else
108: vaddr_t sr_size; /* Mapped in window size */
109: #endif
110: struct seg *sr_segp; /* Segment pointer */
111: } SR;
112:
113: /*
114: * Flags (sr_flag).
115: */
116: #define SRFPMAP 0x01 /* Segment is mapped in process */
117: #define SRFDUMP 0x02 /* Dump segment */
118: #define SRFDATA 0x04 /* Data segment */
119: #define SRFRODT 0x08 /* Data, read-only (used by shm) */
120: #define SRFBERM 0x10 /* Segment to be removed (used by shm) */
121:
122: #endif /* ! defined (__SYS_SEG_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.