root / lab4 / .minix-src / include / minix / com.h @ 14
History | View | Annotate | Download (47.7 KB)
1 | 13 | up20180614 | /* This file defines constants for use in message communication (mostly)
|
---|---|---|---|
2 | * between system processes.
|
||
3 | *
|
||
4 | * A number of protocol message request and response types are defined. For
|
||
5 | * debugging purposes, each protocol is assigned its own unique number range.
|
||
6 | * The following such message type ranges have been allocated:
|
||
7 | *
|
||
8 | * 0x00 - 0xFF Process Manager (PM) requests (see callnr.h)
|
||
9 | * 0x100 - 0x1FF Virtual File System (VFS) requests (see callnr.h)
|
||
10 | * 0x200 - 0x2FF Data link layer requests and responses
|
||
11 | * 0x300 - 0x3FF Bus controller requests and responses
|
||
12 | * 0x400 - 0x4FF Character device requests and responses
|
||
13 | * 0x500 - 0x5FF Block device requests and responses
|
||
14 | * 0x600 - 0x6FF Kernel calls
|
||
15 | * 0x700 - 0x7FF Reincarnation Server (RS) requests
|
||
16 | * 0x800 - 0x8FF Data Store (DS) requests
|
||
17 | * 0x900 - 0x9FF Requests from PM to VFS, and responses
|
||
18 | * 0xA00 - 0xAFF Requests from VFS to file systems (see vfsif.h)
|
||
19 | * 0xB00 - 0xBFF Transaction IDs from VFS to file systems (see vfsif.h)
|
||
20 | * 0xC00 - 0xCFF Virtual Memory (VM) requests
|
||
21 | * 0xD00 - 0xDFF IPC server requests
|
||
22 | * 0xE00 - 0xEFF Common system messages (e.g. system signals)
|
||
23 | * 0xF00 - 0xFFF Scheduling messages
|
||
24 | * 0x1000 - 0x10FF Notify messages
|
||
25 | * 0x1100 - 0x11FF USB
|
||
26 | * 0x1200 - 0x12FF Devman
|
||
27 | * 0x1300 - 0x13FF TTY requests
|
||
28 | * 0x1400 - 0x14FF Real Time Clock requests and responses
|
||
29 | * 0x1500 - 0x15FF Input server messages
|
||
30 | * 0x1600 - 0x16FF VirtualBox (VBOX) requests (see vboxif.h)
|
||
31 | * 0x1700 - 0x17FF PTYFS requests
|
||
32 | * 0x1800 - 0x18FF Management Information Base (MIB) requests
|
||
33 | * 0x1900 - 0x19FF Socket device requests and responses
|
||
34 | * 0x1A00 - 0x1AFF Network device requests and responses
|
||
35 | *
|
||
36 | * Zero and negative values are widely used for OK and error responses.
|
||
37 | */
|
||
38 | |||
39 | #ifndef _MINIX_COM_H
|
||
40 | #define _MINIX_COM_H
|
||
41 | |||
42 | /*===========================================================================*
|
||
43 | * Process numbers of processes in the system image *
|
||
44 | *===========================================================================*/
|
||
45 | |||
46 | /* Kernel tasks. These all run in the same address space. */
|
||
47 | #define ASYNCM ((endpoint_t) -5) /* notifies about finished async sends */ |
||
48 | #define IDLE ((endpoint_t) -4) /* runs when no one else can run */ |
||
49 | #define CLOCK ((endpoint_t) -3) /* alarms and other clock functions */ |
||
50 | #define SYSTEM ((endpoint_t) -2) /* request system functionality */ |
||
51 | #define KERNEL ((endpoint_t) -1) /* pseudo-process for IPC and scheduling */ |
||
52 | #define HARDWARE KERNEL /* for hardware interrupt handlers */ |
||
53 | |||
54 | /* Number of tasks. Note that NR_PROCS is defined in <minix/config.h>. */
|
||
55 | #define MAX_NR_TASKS 1023 |
||
56 | #define NR_TASKS 5 |
||
57 | |||
58 | /* User-space processes, that is, device drivers, servers, and INIT. */
|
||
59 | #define PM_PROC_NR ((endpoint_t) 0) /* process manager */ |
||
60 | #define VFS_PROC_NR ((endpoint_t) 1) /* file system */ |
||
61 | #define RS_PROC_NR ((endpoint_t) 2) /* reincarnation server */ |
||
62 | #define MEM_PROC_NR ((endpoint_t) 3) /* memory driver (RAM disk, null, etc.) */ |
||
63 | #define SCHED_PROC_NR ((endpoint_t) 4) /* scheduler */ |
||
64 | #define TTY_PROC_NR ((endpoint_t) 5) /* terminal (TTY) driver */ |
||
65 | #define DS_PROC_NR ((endpoint_t) 6) /* data store server */ |
||
66 | #define MIB_PROC_NR ((endpoint_t) 7) /* management info base service */ |
||
67 | #define VM_PROC_NR ((endpoint_t) 8) /* memory server */ |
||
68 | #define PFS_PROC_NR ((endpoint_t) 9) /* pipe filesystem */ |
||
69 | #define MFS_PROC_NR ((endpoint_t) 10) /* minix root filesystem */ |
||
70 | #define LAST_SPECIAL_PROC_NR 11 /* An untyped version for |
||
71 | computation in macros.*/
|
||
72 | #define INIT_PROC_NR ((endpoint_t) LAST_SPECIAL_PROC_NR) /* init |
||
73 | -- goes multiuser */
|
||
74 | #define NR_BOOT_MODULES (INIT_PROC_NR+1) |
||
75 | |||
76 | /* Root system process and root user process. */
|
||
77 | #define ROOT_SYS_PROC_NR RS_PROC_NR
|
||
78 | #define ROOT_USR_PROC_NR INIT_PROC_NR
|
||
79 | |||
80 | /*===========================================================================*
|
||
81 | * Kernel notification types *
|
||
82 | *===========================================================================*/
|
||
83 | |||
84 | /* Kernel notification types. In principle, these can be sent to any process,
|
||
85 | * so make sure that these types do not interfere with other message types.
|
||
86 | * Notifications are prioritized because of the way they are unhold() and
|
||
87 | * blocking notifications are delivered. The lowest numbers go first. The
|
||
88 | * offset are used for the per-process notification bit maps.
|
||
89 | */
|
||
90 | #define NOTIFY_MESSAGE 0x1000 |
||
91 | /* FIXME the old is_notify(a) should be replaced by is_ipc_notify(status). */
|
||
92 | #define is_ipc_notify(ipc_status) (IPC_STATUS_CALL(ipc_status) == NOTIFY)
|
||
93 | #define is_notify(a) ((unsigned) ((a) - NOTIFY_MESSAGE) < 0x100) |
||
94 | #define is_ipc_asynch(ipc_status) \
|
||
95 | (is_ipc_notify(ipc_status) || IPC_STATUS_CALL(ipc_status) == SENDA) |
||
96 | |||
97 | /*===========================================================================*
|
||
98 | * Messages for BUS controller drivers *
|
||
99 | *===========================================================================*/
|
||
100 | #define BUSC_RQ_BASE 0x300 /* base for request types */ |
||
101 | #define BUSC_RS_BASE 0x380 /* base for response types */ |
||
102 | |||
103 | #define BUSC_PCI_INIT (BUSC_RQ_BASE + 0) /* First message to |
||
104 | * PCI driver
|
||
105 | */
|
||
106 | #define BUSC_PCI_FIRST_DEV (BUSC_RQ_BASE + 1) /* Get index (and |
||
107 | * vid/did) of the
|
||
108 | * first PCI device
|
||
109 | */
|
||
110 | #define BUSC_PCI_NEXT_DEV (BUSC_RQ_BASE + 2) /* Get index (and |
||
111 | * vid/did) of the
|
||
112 | * next PCI device
|
||
113 | */
|
||
114 | #define BUSC_PCI_FIND_DEV (BUSC_RQ_BASE + 3) /* Get index of a |
||
115 | * PCI device based on
|
||
116 | * bus/dev/function
|
||
117 | */
|
||
118 | #define BUSC_PCI_IDS (BUSC_RQ_BASE + 4) /* Get vid/did from an |
||
119 | * index
|
||
120 | */
|
||
121 | #define BUSC_PCI_RESERVE (BUSC_RQ_BASE + 7) /* Reserve a PCI dev */ |
||
122 | #define BUSC_PCI_ATTR_R8 (BUSC_RQ_BASE + 8) /* Read 8-bit |
||
123 | * attribute value
|
||
124 | */
|
||
125 | #define BUSC_PCI_ATTR_R16 (BUSC_RQ_BASE + 9) /* Read 16-bit |
||
126 | * attribute value
|
||
127 | */
|
||
128 | #define BUSC_PCI_ATTR_R32 (BUSC_RQ_BASE + 10) /* Read 32-bit |
||
129 | * attribute value
|
||
130 | */
|
||
131 | #define BUSC_PCI_ATTR_W8 (BUSC_RQ_BASE + 11) /* Write 8-bit |
||
132 | * attribute value
|
||
133 | */
|
||
134 | #define BUSC_PCI_ATTR_W16 (BUSC_RQ_BASE + 12) /* Write 16-bit |
||
135 | * attribute value
|
||
136 | */
|
||
137 | #define BUSC_PCI_ATTR_W32 (BUSC_RQ_BASE + 13) /* Write 32-bit |
||
138 | * attribute value
|
||
139 | */
|
||
140 | #define BUSC_PCI_RESCAN (BUSC_RQ_BASE + 14) /* Rescan bus */ |
||
141 | #define BUSC_PCI_DEV_NAME_S (BUSC_RQ_BASE + 15) /* Get the name of a |
||
142 | * PCI device
|
||
143 | * (safecopy)
|
||
144 | */
|
||
145 | #define BUSC_PCI_SLOT_NAME_S (BUSC_RQ_BASE + 16) /* Get the name of a |
||
146 | * PCI slot (safecopy)
|
||
147 | */
|
||
148 | #define BUSC_PCI_SET_ACL (BUSC_RQ_BASE + 17) /* Set the ACL for a |
||
149 | * driver (safecopy)
|
||
150 | */
|
||
151 | #define BUSC_PCI_DEL_ACL (BUSC_RQ_BASE + 18) /* Delete the ACL of a |
||
152 | * driver
|
||
153 | */
|
||
154 | #define BUSC_PCI_GET_BAR (BUSC_RQ_BASE + 19) /* Get Base Address |
||
155 | * Register properties
|
||
156 | */
|
||
157 | #define IOMMU_MAP (BUSC_RQ_BASE + 32) /* Ask IOMMU to map |
||
158 | * a segment of memory
|
||
159 | */
|
||
160 | |||
161 | #define BUSC_I2C_RESERVE (BUSC_RQ_BASE + 64) /* reserve i2c device */ |
||
162 | #define BUSC_I2C_EXEC (BUSC_RQ_BASE + 65) /* perform i2c action */ |
||
163 | |||
164 | /*===========================================================================*
|
||
165 | * Messages for networking layer *
|
||
166 | *===========================================================================*/
|
||
167 | |||
168 | /* Base type for data link layer requests and responses. */
|
||
169 | #define DL_RQ_BASE 0x200 |
||
170 | #define DL_RS_BASE 0x280 |
||
171 | |||
172 | #define IS_DL_RQ(type) (((type) & ~0x7f) == DL_RQ_BASE) |
||
173 | #define IS_DL_RS(type) (((type) & ~0x7f) == DL_RS_BASE) |
||
174 | |||
175 | /* Message types for data link layer requests. */
|
||
176 | #define DL_CONF (DL_RQ_BASE + 0) |
||
177 | #define DL_GETSTAT_S (DL_RQ_BASE + 1) |
||
178 | #define DL_WRITEV_S (DL_RQ_BASE + 2) |
||
179 | #define DL_READV_S (DL_RQ_BASE + 3) |
||
180 | |||
181 | /* Message type for data link layer replies. */
|
||
182 | #define DL_CONF_REPLY (DL_RS_BASE + 0) |
||
183 | #define DL_STAT_REPLY (DL_RS_BASE + 1) |
||
184 | #define DL_TASK_REPLY (DL_RS_BASE + 2) |
||
185 | |||
186 | /* Bits in 'flags' field of DL replies. */
|
||
187 | # define DL_NOFLAGS 0x00 |
||
188 | # define DL_PACK_SEND 0x01 |
||
189 | # define DL_PACK_RECV 0x02 |
||
190 | |||
191 | /* Bits in 'DL_MODE' field of DL requests. */
|
||
192 | # define DL_NOMODE 0x0 |
||
193 | # define DL_PROMISC_REQ 0x1 |
||
194 | # define DL_MULTI_REQ 0x2 |
||
195 | # define DL_BROAD_REQ 0x4 |
||
196 | |||
197 | /*===========================================================================*
|
||
198 | * SYSTASK request types and field names *
|
||
199 | *===========================================================================*/
|
||
200 | |||
201 | /* System library calls are dispatched via a call vector, so be careful when
|
||
202 | * modifying the system call numbers. The numbers here determine which call
|
||
203 | * is made from the call vector.
|
||
204 | */
|
||
205 | #define KERNEL_CALL 0x600 /* base for kernel calls to SYSTEM */ |
||
206 | |||
207 | # define SYS_FORK (KERNEL_CALL + 0) /* sys_fork() */ |
||
208 | # define SYS_EXEC (KERNEL_CALL + 1) /* sys_exec() */ |
||
209 | # define SYS_CLEAR (KERNEL_CALL + 2) /* sys_clear() */ |
||
210 | # define SYS_SCHEDULE (KERNEL_CALL + 3) /* sys_schedule() */ |
||
211 | # define SYS_PRIVCTL (KERNEL_CALL + 4) /* sys_privctl() */ |
||
212 | # define SYS_TRACE (KERNEL_CALL + 5) /* sys_trace() */ |
||
213 | # define SYS_KILL (KERNEL_CALL + 6) /* sys_kill() */ |
||
214 | |||
215 | # define SYS_GETKSIG (KERNEL_CALL + 7) /* sys_getsig() */ |
||
216 | # define SYS_ENDKSIG (KERNEL_CALL + 8) /* sys_endsig() */ |
||
217 | # define SYS_SIGSEND (KERNEL_CALL + 9) /* sys_sigsend() */ |
||
218 | # define SYS_SIGRETURN (KERNEL_CALL + 10) /* sys_sigreturn() */ |
||
219 | |||
220 | # define SYS_MEMSET (KERNEL_CALL + 13) /* sys_memset() */ |
||
221 | |||
222 | # define SYS_UMAP (KERNEL_CALL + 14) /* sys_umap() */ |
||
223 | # define SYS_VIRCOPY (KERNEL_CALL + 15) /* sys_vircopy() */ |
||
224 | # define SYS_PHYSCOPY (KERNEL_CALL + 16) /* sys_physcopy() */ |
||
225 | # define SYS_UMAP_REMOTE (KERNEL_CALL + 17) /* sys_umap_remote() */ |
||
226 | # define SYS_VUMAP (KERNEL_CALL + 18) /* sys_vumap() */ |
||
227 | |||
228 | # define SYS_IRQCTL (KERNEL_CALL + 19) /* sys_irqctl() */ |
||
229 | |||
230 | # define SYS_DEVIO (KERNEL_CALL + 21) /* sys_devio() */ |
||
231 | # define SYS_SDEVIO (KERNEL_CALL + 22) /* sys_sdevio() */ |
||
232 | # define SYS_VDEVIO (KERNEL_CALL + 23) /* sys_vdevio() */ |
||
233 | |||
234 | # define SYS_SETALARM (KERNEL_CALL + 24) /* sys_setalarm() */ |
||
235 | # define SYS_TIMES (KERNEL_CALL + 25) /* sys_times() */ |
||
236 | # define SYS_GETINFO (KERNEL_CALL + 26) /* sys_getinfo() */ |
||
237 | # define SYS_ABORT (KERNEL_CALL + 27) /* sys_abort() */ |
||
238 | # define SYS_IOPENABLE (KERNEL_CALL + 28) /* sys_enable_iop() */ |
||
239 | # define SYS_SAFECOPYFROM (KERNEL_CALL + 31) /* sys_safecopyfrom() */ |
||
240 | # define SYS_SAFECOPYTO (KERNEL_CALL + 32) /* sys_safecopyto() */ |
||
241 | # define SYS_VSAFECOPY (KERNEL_CALL + 33) /* sys_vsafecopy() */ |
||
242 | # define SYS_SETGRANT (KERNEL_CALL + 34) /* sys_setgrant() */ |
||
243 | # define SYS_READBIOS (KERNEL_CALL + 35) /* sys_readbios() */ |
||
244 | |||
245 | # define SYS_SPROF (KERNEL_CALL + 36) /* sys_sprof() */ |
||
246 | |||
247 | # define SYS_STIME (KERNEL_CALL + 39) /* sys_stime() */ |
||
248 | # define SYS_SETTIME (KERNEL_CALL + 40) /* sys_settime() */ |
||
249 | |||
250 | # define SYS_VMCTL (KERNEL_CALL + 43) /* sys_vmctl() */ |
||
251 | |||
252 | # define SYS_DIAGCTL (KERNEL_CALL + 44) /* sys_diagctl() */ |
||
253 | |||
254 | # define SYS_VTIMER (KERNEL_CALL + 45) /* sys_vtimer() */ |
||
255 | # define SYS_RUNCTL (KERNEL_CALL + 46) /* sys_runctl() */ |
||
256 | # define SYS_GETMCONTEXT (KERNEL_CALL + 50) /* sys_getmcontext() */ |
||
257 | # define SYS_SETMCONTEXT (KERNEL_CALL + 51) /* sys_setmcontext() */ |
||
258 | |||
259 | # define SYS_UPDATE (KERNEL_CALL + 52) /* sys_update() */ |
||
260 | # define SYS_EXIT (KERNEL_CALL + 53) /* sys_exit() */ |
||
261 | |||
262 | # define SYS_SCHEDCTL (KERNEL_CALL + 54) /* sys_schedctl() */ |
||
263 | # define SYS_STATECTL (KERNEL_CALL + 55) /* sys_statectl() */ |
||
264 | |||
265 | # define SYS_SAFEMEMSET (KERNEL_CALL + 56) /* sys_safememset() */ |
||
266 | |||
267 | # define SYS_PADCONF (KERNEL_CALL + 57) /* sys_padconf() */ |
||
268 | |||
269 | /* Total */
|
||
270 | #define NR_SYS_CALLS 58 /* number of kernel calls */ |
||
271 | |||
272 | #define SYS_CALL_MASK_SIZE BITMAP_CHUNKS(NR_SYS_CALLS)
|
||
273 | |||
274 | /* Basic kernel calls allowed to every system process. */
|
||
275 | #define SYS_BASIC_CALLS \
|
||
276 | SYS_EXIT, SYS_SAFECOPYFROM, SYS_SAFECOPYTO, SYS_VSAFECOPY, SYS_GETINFO, \ |
||
277 | SYS_TIMES, SYS_SETALARM, SYS_SETGRANT, \ |
||
278 | SYS_DIAGCTL, SYS_STATECTL, SYS_SAFEMEMSET |
||
279 | |||
280 | /* Field names for SYS_DEVIO, SYS_VDEVIO, SYS_SDEVIO. */
|
||
281 | # define _DIO_INPUT 0x001 |
||
282 | # define _DIO_OUTPUT 0x002 |
||
283 | # define _DIO_DIRMASK 0x00f |
||
284 | # define _DIO_BYTE 0x010 |
||
285 | # define _DIO_WORD 0x020 |
||
286 | # define _DIO_LONG 0x030 |
||
287 | # define _DIO_TYPEMASK 0x0f0 |
||
288 | # define _DIO_SAFE 0x100 |
||
289 | # define _DIO_SAFEMASK 0xf00 |
||
290 | # define DIO_INPUT_BYTE (_DIO_INPUT|_DIO_BYTE)
|
||
291 | # define DIO_INPUT_WORD (_DIO_INPUT|_DIO_WORD)
|
||
292 | # define DIO_INPUT_LONG (_DIO_INPUT|_DIO_LONG)
|
||
293 | # define DIO_OUTPUT_BYTE (_DIO_OUTPUT|_DIO_BYTE)
|
||
294 | # define DIO_OUTPUT_WORD (_DIO_OUTPUT|_DIO_WORD)
|
||
295 | # define DIO_OUTPUT_LONG (_DIO_OUTPUT|_DIO_LONG)
|
||
296 | # define DIO_SAFE_INPUT_BYTE (_DIO_INPUT|_DIO_BYTE|_DIO_SAFE)
|
||
297 | # define DIO_SAFE_INPUT_WORD (_DIO_INPUT|_DIO_WORD|_DIO_SAFE)
|
||
298 | # define DIO_SAFE_INPUT_LONG (_DIO_INPUT|_DIO_LONG|_DIO_SAFE)
|
||
299 | # define DIO_SAFE_OUTPUT_BYTE (_DIO_OUTPUT|_DIO_BYTE|_DIO_SAFE)
|
||
300 | # define DIO_SAFE_OUTPUT_WORD (_DIO_OUTPUT|_DIO_WORD|_DIO_SAFE)
|
||
301 | # define DIO_SAFE_OUTPUT_LONG (_DIO_OUTPUT|_DIO_LONG|_DIO_SAFE)
|
||
302 | |||
303 | /* Field names for SYS_IRQCTL. */
|
||
304 | # define IRQ_SETPOLICY 1 /* manage a slot of the IRQ table */ |
||
305 | # define IRQ_RMPOLICY 2 /* remove a slot of the IRQ table */ |
||
306 | # define IRQ_ENABLE 3 /* enable interrupts */ |
||
307 | # define IRQ_DISABLE 4 /* disable interrupts */ |
||
308 | # define IRQ_REENABLE 0x001 /* reenable IRQ line after interrupt */ |
||
309 | # define IRQ_EXCLUSIVE 0x002 /* exclusive IRQ: disables active handlers */ |
||
310 | # define IRQ_BYTE 0x100 /* byte values */ |
||
311 | # define IRQ_WORD 0x200 /* word values */ |
||
312 | # define IRQ_LONG 0x400 /* long values */ |
||
313 | |||
314 | #define CP_FLAG_TRY 0x01 /* do not transparently map */ |
||
315 | |||
316 | /* Field names for SYS_GETINFO. */
|
||
317 | # define GET_KINFO 0 /* get kernel information structure */ |
||
318 | # define GET_IMAGE 1 /* get system image table */ |
||
319 | # define GET_PROCTAB 2 /* get kernel process table */ |
||
320 | # define GET_RANDOMNESS 3 /* get randomness buffer */ |
||
321 | # define GET_MONPARAMS 4 /* get monitor parameters */ |
||
322 | # define GET_KENV 5 /* get kernel environment string */ |
||
323 | # define GET_IRQHOOKS 6 /* get the IRQ table */ |
||
324 | # define GET_PRIVTAB 8 /* get kernel privileges table */ |
||
325 | # define GET_KADDRESSES 9 /* get various kernel addresses */ |
||
326 | # define GET_SCHEDINFO 10 /* get scheduling queues */ |
||
327 | # define GET_PROC 11 /* get process slot if given process */ |
||
328 | # define GET_MACHINE 12 /* get machine information */ |
||
329 | # define GET_LOCKTIMING 13 /* get lock()/unlock() latency timing */ |
||
330 | # define GET_BIOSBUFFER 14 /* get a buffer for BIOS calls */ |
||
331 | # define GET_LOADINFO 15 /* get load average information */ |
||
332 | # define GET_IRQACTIDS 16 /* get the IRQ masks */ |
||
333 | # define GET_PRIV 17 /* get privilege structure */ |
||
334 | # define GET_HZ 18 /* get HZ value */ |
||
335 | # define GET_WHOAMI 19 /* get own name, endpoint, and privileges */ |
||
336 | # define GET_RANDOMNESS_BIN 20 /* get one randomness bin */ |
||
337 | # define GET_IDLETSC 21 /* get cumulative idle time stamp counter */ |
||
338 | # define GET_CPUINFO 23 /* get information about cpus */ |
||
339 | # define GET_REGS 24 /* get general process registers */ |
||
340 | # define GET_CPUTICKS 25 /* get per-state ticks for a cpu */ |
||
341 | |||
342 | /* Subfunctions for SYS_PRIVCTL */
|
||
343 | #define SYS_PRIV_ALLOW 1 /* Allow process to run */ |
||
344 | #define SYS_PRIV_DISALLOW 2 /* Disallow process to run */ |
||
345 | #define SYS_PRIV_SET_SYS 3 /* Set a system privilege structure */ |
||
346 | #define SYS_PRIV_SET_USER 4 /* Set a user privilege structure */ |
||
347 | #define SYS_PRIV_ADD_IO 5 /* Add I/O range (struct io_range) */ |
||
348 | #define SYS_PRIV_ADD_MEM 6 /* Add memory range (struct mem_range) |
||
349 | */
|
||
350 | #define SYS_PRIV_ADD_IRQ 7 /* Add IRQ */ |
||
351 | #define SYS_PRIV_QUERY_MEM 8 /* Verify memory privilege. */ |
||
352 | #define SYS_PRIV_UPDATE_SYS 9 /* Update a sys privilege structure. */ |
||
353 | #define SYS_PRIV_YIELD 10 /* Allow process to run and suspend */ |
||
354 | #define SYS_PRIV_CLEAR_IPC_REFS 11 /* Clear pending IPC for the process */ |
||
355 | |||
356 | /* Constants for exec. FIXME: these do not belong here. */
|
||
357 | #define PMEF_AUXVECTORS 20 |
||
358 | #define PMEF_EXECNAMELEN1 PATH_MAX
|
||
359 | |||
360 | /* Flags for PR_FORK_FLAGS. */
|
||
361 | #define PFF_VMINHIBIT 0x01 /* Don't schedule until release by VM. */ |
||
362 | |||
363 | /* SYS_SAFEMEMSET */
|
||
364 | #define SMS_DST m2_i1 /* dst endpoint */ |
||
365 | #define SMS_GID m2_i3 /* grant id */ |
||
366 | #define SMS_OFFSET m2_l1 /* offset within grant */ |
||
367 | #define SMS_BYTES m2_l2 /* bytes from offset */ |
||
368 | #define SMS_PATTERN m2_i2 /* memset() pattern */ |
||
369 | |||
370 | /* Field names for SYS_VMCTL. */
|
||
371 | #define SVMCTL_WHO m1_i1
|
||
372 | #define SVMCTL_PARAM m1_i2 /* All SYS_VMCTL requests. */ |
||
373 | #define SVMCTL_VALUE m1_i3
|
||
374 | #define SVMCTL_MRG_TARGET m2_i1 /* MEMREQ_GET reply: target process */ |
||
375 | #define SVMCTL_MRG_ADDR m2_i2 /* MEMREQ_GET reply: address */ |
||
376 | #define SVMCTL_MRG_LENGTH m2_i3 /* MEMREQ_GET reply: length */ |
||
377 | #define SVMCTL_MRG_FLAG m2_s1 /* MEMREQ_GET reply: flag */ |
||
378 | #define SVMCTL_MRG_EP2 m2_l1 /* MEMREQ_GET reply: source process */ |
||
379 | #define SVMCTL_MRG_ADDR2 m2_l2 /* MEMREQ_GET reply: source address */ |
||
380 | #define SVMCTL_MRG_REQUESTOR m2_p1 /* MEMREQ_GET reply: requestor */ |
||
381 | #define SVMCTL_MAP_VIR_ADDR m1_p1
|
||
382 | #define SVMCTL_PTROOT m1_i3
|
||
383 | #define SVMCTL_PTROOT_V m1_p1
|
||
384 | |||
385 | /* Reply message for VMCTL_KERN_PHYSMAP */
|
||
386 | #define SVMCTL_MAP_FLAGS m2_i1 /* VMMF_* */ |
||
387 | #define SVMCTL_MAP_PHYS_ADDR m2_l1
|
||
388 | #define SVMCTL_MAP_PHYS_LEN m2_l2
|
||
389 | |||
390 | #define VMMF_UNCACHED (1L << 0) |
||
391 | #define VMMF_USER (1L << 1) |
||
392 | #define VMMF_WRITE (1L << 2) |
||
393 | #define VMMF_GLO (1L << 3) |
||
394 | |||
395 | /* Values for SVMCTL_PARAM. */
|
||
396 | #define VMCTL_CLEAR_PAGEFAULT 12 |
||
397 | #define VMCTL_GET_PDBR 13 |
||
398 | #define VMCTL_MEMREQ_GET 14 |
||
399 | #define VMCTL_MEMREQ_REPLY 15 |
||
400 | #define VMCTL_NOPAGEZERO 18 |
||
401 | #define VMCTL_I386_KERNELLIMIT 19 |
||
402 | #define VMCTL_I386_INVLPG 25 |
||
403 | #define VMCTL_FLUSHTLB 26 |
||
404 | #define VMCTL_KERN_PHYSMAP 27 |
||
405 | #define VMCTL_KERN_MAP_REPLY 28 |
||
406 | #define VMCTL_SETADDRSPACE 29 |
||
407 | #define VMCTL_VMINHIBIT_SET 30 |
||
408 | #define VMCTL_VMINHIBIT_CLEAR 31 |
||
409 | #define VMCTL_CLEARMAPCACHE 32 |
||
410 | #define VMCTL_BOOTINHIBIT_CLEAR 33 |
||
411 | |||
412 | /* Codes and field names for SYS_DIAGCTL. */
|
||
413 | #define DIAGCTL_CODE_DIAG 1 /* Print diagnostics. */ |
||
414 | #define DIAGCTL_CODE_STACKTRACE 2 /* Print process stack. */ |
||
415 | #define DIAGCTL_CODE_REGISTER 3 /* Register for diagnostic signals */ |
||
416 | #define DIAGCTL_CODE_UNREGISTER 4 /* Unregister for diagnostic signals */ |
||
417 | #define DIAG_BUFSIZE (80*25) |
||
418 | |||
419 | /* Field names for SYS_VTIMER. */
|
||
420 | #define VT_WHICH m2_i1 /* which timer to set/retrieve */ |
||
421 | # define VT_VIRTUAL 1 /* the ITIMER_VIRTUAL timer */ |
||
422 | # define VT_PROF 2 /* the ITIMER_PROF timer */ |
||
423 | #define VT_SET m2_i2 /* 1 for setting a timer, 0 retrieval only */ |
||
424 | #define VT_VALUE m2_l1 /* new/previous value of the timer */ |
||
425 | #define VT_ENDPT m2_l2 /* process to set/retrieve the timer for */ |
||
426 | |||
427 | /* Field names for SYS_RUNCTL. */
|
||
428 | #define RC_ENDPT m1_i1 /* which process to stop or resume */ |
||
429 | #define RC_ACTION m1_i2 /* set or clear stop flag */ |
||
430 | # define RC_STOP 0 /* stop the process */ |
||
431 | # define RC_RESUME 1 /* clear the stop flag */ |
||
432 | #define RC_FLAGS m1_i3 /* request flags */ |
||
433 | # define RC_DELAY 1 /* delay stop if process is sending */ |
||
434 | |||
435 | /* Field names for SYS_UPDATE. */
|
||
436 | #define SYS_UPD_SRC_ENDPT m1_i1 /* source endpoint */ |
||
437 | #define SYS_UPD_DST_ENDPT m1_i2 /* destination endpoint */ |
||
438 | #define SYS_UPD_FLAGS m1_i3 /* update flags */ |
||
439 | # define SYS_UPD_ROLLBACK 0x1 /* update is rollback */ |
||
440 | |||
441 | |||
442 | /* Subfunctions for SYS_STATECTL */
|
||
443 | #define SYS_STATE_CLEAR_IPC_REFS 1 /* clear IPC references */ |
||
444 | #define SYS_STATE_SET_STATE_TABLE 2 /* set state map */ |
||
445 | #define SYS_STATE_ADD_IPC_BL_FILTER 3 /* set IPC blacklist filter */ |
||
446 | #define SYS_STATE_ADD_IPC_WL_FILTER 4 /* set IPC whitelist filter */ |
||
447 | #define SYS_STATE_CLEAR_IPC_FILTERS 5 /* clear IPC filters */ |
||
448 | |||
449 | /* Subfunctions for SYS_SCHEDCTL */
|
||
450 | # define SCHEDCTL_FLAG_KERNEL 1 /* mark kernel scheduler and remove |
||
451 | * RTS_NO_QUANTUM; otherwise caller is
|
||
452 | * marked scheduler
|
||
453 | */
|
||
454 | |||
455 | /* Field names for SYS_PADCONF */
|
||
456 | #define PADCONF_PADCONF m2_i1 /* pad to configure */ |
||
457 | #define PADCONF_MASK m2_i2 /* mask to apply */ |
||
458 | #define PADCONF_VALUE m2_i3 /* value to write */ |
||
459 | |||
460 | /*===========================================================================*
|
||
461 | * Messages for the Reincarnation Server *
|
||
462 | *===========================================================================*/
|
||
463 | |||
464 | #define RS_RQ_BASE 0x700 |
||
465 | |||
466 | #define RS_UP (RS_RQ_BASE + 0) /* start system service */ |
||
467 | #define RS_DOWN (RS_RQ_BASE + 1) /* stop system service */ |
||
468 | #define RS_REFRESH (RS_RQ_BASE + 2) /* refresh system service */ |
||
469 | #define RS_RESTART (RS_RQ_BASE + 3) /* restart system service */ |
||
470 | #define RS_SHUTDOWN (RS_RQ_BASE + 4) /* alert about shutdown */ |
||
471 | #define RS_UPDATE (RS_RQ_BASE + 5) /* update system service */ |
||
472 | #define RS_CLONE (RS_RQ_BASE + 6) /* clone system service */ |
||
473 | #define RS_UNCLONE (RS_RQ_BASE + 7) /* unclone system service */ |
||
474 | |||
475 | #define RS_LOOKUP (RS_RQ_BASE + 8) /* lookup server name */ |
||
476 | |||
477 | #define RS_GETSYSINFO (RS_RQ_BASE + 9) /* get system information */ |
||
478 | |||
479 | #define RS_INIT (RS_RQ_BASE + 20) /* service init message */ |
||
480 | #define RS_LU_PREPARE (RS_RQ_BASE + 21) /* prepare to update message */ |
||
481 | #define RS_EDIT (RS_RQ_BASE + 22) /* edit system service */ |
||
482 | #define RS_SYSCTL (RS_RQ_BASE + 23) /* perform system ctl action */ |
||
483 | #define RS_FI (RS_RQ_BASE + 24) /* inject fault into service */ |
||
484 | |||
485 | /* Subfunctions for RS_SYSCTL. */
|
||
486 | #define RS_SYSCTL_SRV_STATUS 1 |
||
487 | #define RS_SYSCTL_UPD_START 2 |
||
488 | #define RS_SYSCTL_UPD_RUN 3 |
||
489 | #define RS_SYSCTL_UPD_STOP 4 |
||
490 | #define RS_SYSCTL_UPD_STATUS 5 |
||
491 | |||
492 | /* Subfunctions for RS_FI. */
|
||
493 | #define RS_FI_CRASH 1 |
||
494 | |||
495 | /*===========================================================================*
|
||
496 | * Messages for the Data Store Server *
|
||
497 | *===========================================================================*/
|
||
498 | |||
499 | #define DS_RQ_BASE 0x800 |
||
500 | |||
501 | #define DS_PUBLISH (DS_RQ_BASE + 0) /* publish data */ |
||
502 | #define DS_RETRIEVE (DS_RQ_BASE + 1) /* retrieve data by name */ |
||
503 | #define DS_SUBSCRIBE (DS_RQ_BASE + 2) /* subscribe to data updates */ |
||
504 | #define DS_CHECK (DS_RQ_BASE + 3) /* retrieve updated data */ |
||
505 | #define DS_DELETE (DS_RQ_BASE + 4) /* delete data */ |
||
506 | #define DS_SNAPSHOT (DS_RQ_BASE + 5) /* take a snapshot */ |
||
507 | #define DS_RETRIEVE_LABEL (DS_RQ_BASE + 6) /* retrieve label's name */ |
||
508 | #define DS_GETSYSINFO (DS_RQ_BASE + 7) /* get system information */ |
||
509 | |||
510 | /*===========================================================================*
|
||
511 | * Messages used between PM and VFS *
|
||
512 | *===========================================================================*/
|
||
513 | |||
514 | #define VFS_PM_RQ_BASE 0x900 |
||
515 | #define VFS_PM_RS_BASE 0x980 |
||
516 | |||
517 | #define IS_VFS_PM_RQ(type) (((type) & ~0x7f) == VFS_PM_RQ_BASE) |
||
518 | #define IS_VFS_PM_RS(type) (((type) & ~0x7f) == VFS_PM_RS_BASE) |
||
519 | |||
520 | /* Requests from PM to VFS. */
|
||
521 | #define VFS_PM_INIT (VFS_PM_RQ_BASE + 0) /* Process table exchange */ |
||
522 | #define VFS_PM_SETUID (VFS_PM_RQ_BASE + 1) /* Set new user ID */ |
||
523 | #define VFS_PM_SETGID (VFS_PM_RQ_BASE + 2) /* Set group ID */ |
||
524 | #define VFS_PM_SETSID (VFS_PM_RQ_BASE + 3) /* Set session leader */ |
||
525 | #define VFS_PM_EXIT (VFS_PM_RQ_BASE + 4) /* Process exits */ |
||
526 | #define VFS_PM_DUMPCORE (VFS_PM_RQ_BASE + 5) /* Process is to dump core */ |
||
527 | #define VFS_PM_EXEC (VFS_PM_RQ_BASE + 6) /* Forwarded exec call */ |
||
528 | #define VFS_PM_FORK (VFS_PM_RQ_BASE + 7) /* Newly forked process */ |
||
529 | #define VFS_PM_SRV_FORK (VFS_PM_RQ_BASE + 8) /* fork for system services */ |
||
530 | #define VFS_PM_UNPAUSE (VFS_PM_RQ_BASE + 9) /* Interrupt process call */ |
||
531 | #define VFS_PM_REBOOT (VFS_PM_RQ_BASE + 10) /* System reboot */ |
||
532 | #define VFS_PM_SETGROUPS (VFS_PM_RQ_BASE + 11) /* Set groups */ |
||
533 | |||
534 | /* Replies from VFS to PM */
|
||
535 | #define VFS_PM_SETUID_REPLY (VFS_PM_RS_BASE + 1) |
||
536 | #define VFS_PM_SETGID_REPLY (VFS_PM_RS_BASE + 2) |
||
537 | #define VFS_PM_SETSID_REPLY (VFS_PM_RS_BASE + 3) |
||
538 | #define VFS_PM_EXIT_REPLY (VFS_PM_RS_BASE + 4) |
||
539 | #define VFS_PM_CORE_REPLY (VFS_PM_RS_BASE + 5) |
||
540 | #define VFS_PM_EXEC_REPLY (VFS_PM_RS_BASE + 6) |
||
541 | #define VFS_PM_FORK_REPLY (VFS_PM_RS_BASE + 7) |
||
542 | #define VFS_PM_SRV_FORK_REPLY (VFS_PM_RS_BASE + 8) |
||
543 | #define VFS_PM_UNPAUSE_REPLY (VFS_PM_RS_BASE + 9) |
||
544 | #define VFS_PM_REBOOT_REPLY (VFS_PM_RS_BASE + 10) |
||
545 | #define VFS_PM_SETGROUPS_REPLY (VFS_PM_RS_BASE + 11) |
||
546 | |||
547 | /* Standard parameters for all requests and replies, except PM_REBOOT */
|
||
548 | # define VFS_PM_ENDPT m7_i1 /* process endpoint */ |
||
549 | |||
550 | /* Additional parameters for PM_INIT */
|
||
551 | # define VFS_PM_SLOT m7_i2 /* process slot number */ |
||
552 | # define VFS_PM_PID m7_i3 /* process pid */ |
||
553 | |||
554 | /* Additional parameters for PM_SETUID and PM_SETGID */
|
||
555 | # define VFS_PM_EID m7_i2 /* effective user/group id */ |
||
556 | # define VFS_PM_RID m7_i3 /* real user/group id */ |
||
557 | |||
558 | /* Additional parameter for PM_SETGROUPS */
|
||
559 | # define VFS_PM_GROUP_NO m7_i2 /* number of groups */ |
||
560 | # define VFS_PM_GROUP_ADDR m7_p1 /* struct holding group data */ |
||
561 | |||
562 | /* Additional parameters for PM_EXEC */
|
||
563 | # define VFS_PM_PATH m7_p1 /* executable */ |
||
564 | # define VFS_PM_PATH_LEN m7_i2 /* length of path including |
||
565 | * terminating null character
|
||
566 | */
|
||
567 | # define VFS_PM_FRAME m7_p2 /* arguments and environment */ |
||
568 | # define VFS_PM_FRAME_LEN m7_i3 /* size of frame */ |
||
569 | # define VFS_PM_PS_STR m7_i5 /* ps_strings pointer */ |
||
570 | |||
571 | /* Additional parameters for PM_EXEC_REPLY and PM_CORE_REPLY */
|
||
572 | # define VFS_PM_STATUS m7_i2 /* OK or failure */ |
||
573 | # define VFS_PM_PC m7_p1 /* program counter */ |
||
574 | # define VFS_PM_NEWSP m7_p2 /* possibly-changed stack ptr */ |
||
575 | # define VFS_PM_NEWPS_STR m7_i5 /* possibly-changed ps_strings ptr */ |
||
576 | |||
577 | /* Additional parameters for PM_FORK and PM_SRV_FORK */
|
||
578 | # define VFS_PM_PENDPT m7_i2 /* parent process endpoint */ |
||
579 | # define VFS_PM_CPID m7_i3 /* child pid */ |
||
580 | # define VFS_PM_REUID m7_i4 /* real and effective uid */ |
||
581 | # define VFS_PM_REGID m7_i5 /* real and effective gid */ |
||
582 | |||
583 | /* Additional parameters for PM_DUMPCORE */
|
||
584 | # define VFS_PM_TERM_SIG m7_i2 /* process's termination signal */ |
||
585 | |||
586 | /*===========================================================================*
|
||
587 | * Messages used from VFS to file servers *
|
||
588 | *===========================================================================*/
|
||
589 | |||
590 | #define FS_BASE 0xA00 /* Requests sent by VFS to filesystem |
||
591 | * implementations. See <minix/vfsif.h>
|
||
592 | */
|
||
593 | |||
594 | /*===========================================================================*
|
||
595 | * Common requests and miscellaneous field names *
|
||
596 | *===========================================================================*/
|
||
597 | |||
598 | #define COMMON_RQ_BASE 0xE00 |
||
599 | #define COMMON_RS_BASE 0xE80 |
||
600 | |||
601 | /* Field names for system signals (sent by a signal manager). */
|
||
602 | #define SIGS_SIGNAL_RECEIVED (COMMON_RQ_BASE+0) |
||
603 | |||
604 | /* Common request to all processes: gcov data. */
|
||
605 | #define COMMON_REQ_GCOV_DATA (COMMON_RQ_BASE+1) |
||
606 | |||
607 | /* Common fault injection ctl request to all processes. */
|
||
608 | #define COMMON_REQ_FI_CTL (COMMON_RQ_BASE+2) |
||
609 | |||
610 | /* Process event message from PM. */
|
||
611 | #define PROC_EVENT (COMMON_RQ_BASE+3) |
||
612 | |||
613 | /* MIB information request for the root node of a registered subtree. */
|
||
614 | #define COMMON_MIB_INFO (COMMON_RQ_BASE+4) |
||
615 | |||
616 | /* MIB sysctl request on a registered subtree. */
|
||
617 | #define COMMON_MIB_CALL (COMMON_RQ_BASE+5) |
||
618 | |||
619 | /* Reply to process event message to PM. */
|
||
620 | #define PROC_EVENT_REPLY (COMMON_RS_BASE+0) |
||
621 | |||
622 | /* Reply to MIB information or sysctl request. */
|
||
623 | #define COMMON_MIB_REPLY (COMMON_RS_BASE+1) |
||
624 | |||
625 | /*===========================================================================*
|
||
626 | * Messages for VM server *
|
||
627 | *===========================================================================*/
|
||
628 | #define VM_RQ_BASE 0xC00 |
||
629 | |||
630 | /* Calls from PM */
|
||
631 | #define VM_EXIT (VM_RQ_BASE+0) |
||
632 | # define VME_ENDPOINT m1_i1
|
||
633 | #define VM_FORK (VM_RQ_BASE+1) |
||
634 | # define VMF_ENDPOINT m1_i1
|
||
635 | # define VMF_SLOTNO m1_i2
|
||
636 | # define VMF_CHILD_ENDPOINT m1_i3 /* result */ |
||
637 | #define VM_BRK (VM_RQ_BASE+2) |
||
638 | #define VM_EXEC_NEWMEM (VM_RQ_BASE+3) |
||
639 | # define VMEN_ENDPOINT m1_i1
|
||
640 | # define VMEN_ARGSPTR m1_p1
|
||
641 | # define VMEN_ARGSSIZE m1_i2
|
||
642 | # define VMEN_FLAGS m1_i3 /* result */ |
||
643 | # define VMEN_STACK_TOP m1_p2 /* result */ |
||
644 | #define VM_WILLEXIT (VM_RQ_BASE+5) |
||
645 | # define VMWE_ENDPOINT m1_i1
|
||
646 | |||
647 | /* General calls. */
|
||
648 | #define VM_MMAP (VM_RQ_BASE+10) |
||
649 | |||
650 | #define VM_MUNMAP (VM_RQ_BASE+17) |
||
651 | # define VMUM_ADDR m_mmap.addr
|
||
652 | # define VMUM_LEN m_mmap.len
|
||
653 | |||
654 | /* to VM: inform VM about a region of memory that is used for
|
||
655 | * bus-master DMA
|
||
656 | */
|
||
657 | #define VM_ADDDMA (VM_RQ_BASE+12) |
||
658 | # define VMAD_EP m2_i1
|
||
659 | # define VMAD_START m2_l1
|
||
660 | # define VMAD_SIZE m2_l2
|
||
661 | |||
662 | /* to VM: inform VM that a region of memory that is no longer
|
||
663 | * used for bus-master DMA
|
||
664 | */
|
||
665 | #define VM_DELDMA (VM_RQ_BASE+13) |
||
666 | # define VMDD_EP m2_i1
|
||
667 | # define VMDD_START m2_l1
|
||
668 | # define VMDD_SIZE m2_l2
|
||
669 | |||
670 | /* to VM: ask VM for a region of memory that should not
|
||
671 | * be used for bus-master DMA any longer
|
||
672 | */
|
||
673 | #define VM_GETDMA (VM_RQ_BASE+14) |
||
674 | # define VMGD_PROCP m2_i1
|
||
675 | # define VMGD_BASEP m2_l1
|
||
676 | # define VMGD_SIZEP m2_l2
|
||
677 | |||
678 | #define VM_MAP_PHYS (VM_RQ_BASE+15) |
||
679 | |||
680 | #define VM_UNMAP_PHYS (VM_RQ_BASE+16) |
||
681 | |||
682 | /* To VM: map in cache block by FS */
|
||
683 | #define VM_MAPCACHEPAGE (VM_RQ_BASE+26) |
||
684 | |||
685 | /* To VM: identify cache block in FS */
|
||
686 | #define VM_SETCACHEPAGE (VM_RQ_BASE+27) |
||
687 | |||
688 | /* To VM: forget cache block in FS */
|
||
689 | #define VM_FORGETCACHEPAGE (VM_RQ_BASE+28) |
||
690 | |||
691 | /* To VM: clear all cache blocks for a device */
|
||
692 | #define VM_CLEARCACHE (VM_RQ_BASE+29) |
||
693 | |||
694 | /* To VFS: fields for request from VM. */
|
||
695 | # define VFS_VMCALL_REQ m10_i1
|
||
696 | # define VFS_VMCALL_FD m10_i2
|
||
697 | # define VFS_VMCALL_REQID m10_i3
|
||
698 | # define VFS_VMCALL_ENDPOINT m10_i4
|
||
699 | # define VFS_VMCALL_OFFSET m10_ull1
|
||
700 | # define VFS_VMCALL_LENGTH m10_l3
|
||
701 | |||
702 | /* Request codes to from VM to VFS */
|
||
703 | #define VMVFSREQ_FDLOOKUP 101 |
||
704 | #define VMVFSREQ_FDCLOSE 102 |
||
705 | #define VMVFSREQ_FDIO 103 |
||
706 | |||
707 | /* Calls from VFS. */
|
||
708 | #define VM_VFS_REPLY (VM_RQ_BASE+30) |
||
709 | # define VMV_ENDPOINT m10_i1
|
||
710 | # define VMV_RESULT m10_i2
|
||
711 | # define VMV_REQID m10_i3
|
||
712 | # define VMV_DEV m10_i4
|
||
713 | # define VMV_INO m10_l1
|
||
714 | # define VMV_FD m10_l2
|
||
715 | # define VMV_SIZE_PAGES m10_l3
|
||
716 | |||
717 | #define VM_REMAP (VM_RQ_BASE+33) |
||
718 | |||
719 | #define VM_SHM_UNMAP (VM_RQ_BASE+34) |
||
720 | |||
721 | #define VM_GETPHYS (VM_RQ_BASE+35) |
||
722 | |||
723 | #define VM_GETREF (VM_RQ_BASE+36) |
||
724 | |||
725 | #define VM_RS_SET_PRIV (VM_RQ_BASE+37) |
||
726 | # define VM_RS_NR m2_i1
|
||
727 | # define VM_RS_BUF m2_l1
|
||
728 | # define VM_RS_SYS m2_i2
|
||
729 | |||
730 | #define VM_INFO (VM_RQ_BASE+40) |
||
731 | |||
732 | /* VM_INFO 'what' values. */
|
||
733 | #define VMIW_STATS 1 |
||
734 | #define VMIW_USAGE 2 |
||
735 | #define VMIW_REGION 3 |
||
736 | |||
737 | #define VM_RS_UPDATE (VM_RQ_BASE+41) |
||
738 | |||
739 | #define VM_RS_MEMCTL (VM_RQ_BASE+42) |
||
740 | # define VM_RS_CTL_ENDPT m1_i1
|
||
741 | # define VM_RS_CTL_REQ m1_i2
|
||
742 | # define VM_RS_MEM_PIN 0 /* pin memory */ |
||
743 | # define VM_RS_MEM_MAKE_VM 1 /* make VM instance */ |
||
744 | # define VM_RS_MEM_HEAP_PREALLOC 2 /* preallocate heap regions */ |
||
745 | # define VM_RS_MEM_MAP_PREALLOC 3 /* preallocate mmaped regions */ |
||
746 | # define VM_RS_MEM_GET_PREALLOC_MAP 4 /* get preallocated mmaped regions */ |
||
747 | # define VM_RS_CTL_ADDR m2_p1
|
||
748 | # define VM_RS_CTL_LEN m2_i3
|
||
749 | |||
750 | #define VM_REMAP_RO (VM_RQ_BASE+44) |
||
751 | /* same args as VM_REMAP */
|
||
752 | |||
753 | #define VM_PROCCTL (VM_RQ_BASE+45) |
||
754 | #define VMPCTL_PARAM m9_l1
|
||
755 | #define VMPCTL_WHO m9_l2
|
||
756 | #define VMPCTL_M1 m9_l3
|
||
757 | #define VMPCTL_LEN m9_l4
|
||
758 | #define VMPCTL_FLAGS m9_l5
|
||
759 | |||
760 | #define VMPPARAM_CLEAR 1 /* values for VMPCTL_PARAM */ |
||
761 | #define VMPPARAM_HANDLEMEM 2 |
||
762 | |||
763 | #define VM_VFS_MMAP (VM_RQ_BASE+46) |
||
764 | |||
765 | #define VM_GETRUSAGE (VM_RQ_BASE+47) |
||
766 | |||
767 | #define VM_RS_PREPARE (VM_RQ_BASE+48) |
||
768 | |||
769 | /* Total. */
|
||
770 | #define NR_VM_CALLS 49 |
||
771 | #define VM_CALL_MASK_SIZE BITMAP_CHUNKS(NR_VM_CALLS)
|
||
772 | |||
773 | /* not handled as a normal VM call, thus at the end of the reserved rage */
|
||
774 | #define VM_PAGEFAULT (VM_RQ_BASE+0xff) |
||
775 | # define VPF_ADDR m1_i1
|
||
776 | # define VPF_FLAGS m1_i2
|
||
777 | |||
778 | /* Basic vm calls allowed to every process. */
|
||
779 | #define VM_BASIC_CALLS \
|
||
780 | VM_BRK, VM_MMAP, VM_MUNMAP, VM_MAP_PHYS, VM_UNMAP_PHYS, VM_INFO, \ |
||
781 | VM_GETRUSAGE /* VM_GETRUSAGE is to be removed from this list ASAP */
|
||
782 | |||
783 | /*===========================================================================*
|
||
784 | * Messages for IPC server *
|
||
785 | *===========================================================================*/
|
||
786 | #define IPC_BASE 0xD00 |
||
787 | |||
788 | /* Shared Memory */
|
||
789 | #define IPC_SHMGET (IPC_BASE+1) |
||
790 | #define IPC_SHMAT (IPC_BASE+2) |
||
791 | #define IPC_SHMDT (IPC_BASE+3) |
||
792 | #define IPC_SHMCTL (IPC_BASE+4) |
||
793 | |||
794 | /* Semaphore */
|
||
795 | #define IPC_SEMGET (IPC_BASE+5) |
||
796 | #define IPC_SEMCTL (IPC_BASE+6) |
||
797 | #define IPC_SEMOP (IPC_BASE+7) |
||
798 | |||
799 | /*===========================================================================*
|
||
800 | * Messages for Scheduling *
|
||
801 | *===========================================================================*/
|
||
802 | #define SCHEDULING_BASE 0xF00 |
||
803 | |||
804 | #define SCHEDULING_NO_QUANTUM (SCHEDULING_BASE+1) |
||
805 | #define SCHEDULING_START (SCHEDULING_BASE+2) |
||
806 | #define SCHEDULING_STOP (SCHEDULING_BASE+3) |
||
807 | #define SCHEDULING_SET_NICE (SCHEDULING_BASE+4) |
||
808 | #define SCHEDULING_INHERIT (SCHEDULING_BASE+5) |
||
809 | |||
810 | /*===========================================================================*
|
||
811 | * Messages for USB *
|
||
812 | *===========================================================================*/
|
||
813 | |||
814 | #define USB_BASE 0x1100 |
||
815 | |||
816 | /* those are from driver to USBD */
|
||
817 | #define USB_RQ_INIT (USB_BASE + 0) /* First message to HCD driver */ |
||
818 | #define USB_RQ_DEINIT (USB_BASE + 1) /* Quit the session */ |
||
819 | #define USB_RQ_SEND_URB (USB_BASE + 2) /* Send URB */ |
||
820 | #define USB_RQ_CANCEL_URB (USB_BASE + 3) /* Cancel URB */ |
||
821 | #define USB_RQ_SEND_INFO (USB_BASE + 4) /* Sends various information */ |
||
822 | #define USB_REPLY (USB_BASE + 5) |
||
823 | |||
824 | |||
825 | /* those are from USBD to driver */
|
||
826 | #define USB_COMPLETE_URB (USB_BASE + 6) |
||
827 | #define USB_ANNOUCE_DEV (USB_BASE + 7) /* Announce a new USB Device */ |
||
828 | #define USB_WITHDRAW_DEV (USB_BASE + 8) /* Withdraw a allready anncounced |
||
829 | USB device*/
|
||
830 | # define USB_GRANT_ID m4_l1
|
||
831 | # define USB_GRANT_SIZE m4_l2
|
||
832 | |||
833 | # define USB_URB_ID m4_l1
|
||
834 | # define USB_RESULT m4_l2
|
||
835 | # define USB_DEV_ID m4_l1
|
||
836 | # define USB_DRIVER_EP m4_l2
|
||
837 | # define USB_INTERFACES m4_l3
|
||
838 | # define USB_RB_INIT_NAME m3_ca1
|
||
839 | |||
840 | # define USB_INFO_TYPE m4_l1
|
||
841 | # define USB_INFO_VALUE m4_l2
|
||
842 | |||
843 | /*===========================================================================*
|
||
844 | * Messages for DeviceManager (s/t like SysFS) *
|
||
845 | *===========================================================================*/
|
||
846 | |||
847 | #define DEVMAN_BASE 0x1200 |
||
848 | |||
849 | #define DEVMAN_ADD_DEV (DEVMAN_BASE + 0) |
||
850 | #define DEVMAN_DEL_DEV (DEVMAN_BASE + 1) |
||
851 | #define DEVMAN_ADD_BUS (DEVMAN_BASE + 2) |
||
852 | #define DEVMAN_DEL_BUS (DEVMAN_BASE + 3) |
||
853 | #define DEVMAN_ADD_DEVFILE (DEVMAN_BASE + 4) |
||
854 | #define DEVMAN_DEL_DEVFILE (DEVMAN_BASE + 5) |
||
855 | |||
856 | #define DEVMAN_REQUEST (DEVMAN_BASE + 6) |
||
857 | #define DEVMAN_REPLY (DEVMAN_BASE + 7) |
||
858 | |||
859 | #define DEVMAN_BIND (DEVMAN_BASE + 8) |
||
860 | #define DEVMAN_UNBIND (DEVMAN_BASE + 9) |
||
861 | |||
862 | # define DEVMAN_GRANT_ID m4_l1
|
||
863 | # define DEVMAN_GRANT_SIZE m4_l2
|
||
864 | |||
865 | # define DEVMAN_ENDPOINT m4_l3
|
||
866 | # define DEVMAN_DEVICE_ID m4_l2
|
||
867 | # define DEVMAN_RESULT m4_l1
|
||
868 | |||
869 | /*===========================================================================*
|
||
870 | * Messages for TTY *
|
||
871 | *===========================================================================*/
|
||
872 | |||
873 | #define TTY_RQ_BASE 0x1300 |
||
874 | |||
875 | #define TTY_FKEY_CONTROL (TTY_RQ_BASE + 1) /* control an F-key at TTY */ |
||
876 | # define FKEY_MAP 10 /* observe function key */ |
||
877 | # define FKEY_UNMAP 11 /* stop observing function key */ |
||
878 | # define FKEY_EVENTS 12 /* request open key presses */ |
||
879 | |||
880 | #define TTY_INPUT_UP (TTY_RQ_BASE + 2) /* input server is up */ |
||
881 | #define TTY_INPUT_EVENT (TTY_RQ_BASE + 3) /* relayed input event */ |
||
882 | |||
883 | /*===========================================================================*
|
||
884 | * Messages for input server and drivers *
|
||
885 | *===========================================================================*/
|
||
886 | |||
887 | /* The input protocol has no real replies. All messages are one-way. */
|
||
888 | #define INPUT_RQ_BASE 0x1500 /* from TTY to server, or server to driver */ |
||
889 | #define INPUT_RS_BASE 0x1580 /* from input driver to input server */ |
||
890 | |||
891 | #define INPUT_CONF (INPUT_RQ_BASE + 0) /* configure driver */ |
||
892 | #define INPUT_SETLEDS (INPUT_RQ_BASE + 1) /* set keyboard LEDs */ |
||
893 | |||
894 | #define INPUT_EVENT (INPUT_RS_BASE + 0) /* send input event */ |
||
895 | |||
896 | /*===========================================================================*
|
||
897 | * Messages for PTYFS *
|
||
898 | *===========================================================================*/
|
||
899 | |||
900 | #define PTYFS_BASE 0x1700 |
||
901 | |||
902 | #define PTYFS_SET (PTYFS_BASE + 0) /* add/update node */ |
||
903 | #define PTYFS_CLEAR (PTYFS_BASE + 1) /* delete node */ |
||
904 | #define PTYFS_NAME (PTYFS_BASE + 2) /* get node name */ |
||
905 | |||
906 | /*===========================================================================*
|
||
907 | * VFS-FS TRANSACTION IDs *
|
||
908 | *===========================================================================*/
|
||
909 | |||
910 | #define VFS_TRANSACTION_BASE 0xB00 |
||
911 | |||
912 | #define VFS_TRANSID (VFS_TRANSACTION_BASE + 1) |
||
913 | #define IS_VFS_FS_TRANSID(type) (((type) & ~0xff) == VFS_TRANSACTION_BASE) |
||
914 | |||
915 | /*===========================================================================*
|
||
916 | * Messages for character devices *
|
||
917 | *===========================================================================*/
|
||
918 | |||
919 | /* Base type for character device requests and responses. */
|
||
920 | #define CDEV_RQ_BASE 0x400 |
||
921 | #define CDEV_RS_BASE 0x480 |
||
922 | |||
923 | #define IS_CDEV_RQ(type) (((type) & ~0x7f) == CDEV_RQ_BASE) |
||
924 | #define IS_CDEV_RS(type) (((type) & ~0x7f) == CDEV_RS_BASE) |
||
925 | |||
926 | /* Message types for character device requests. */
|
||
927 | #define CDEV_OPEN (CDEV_RQ_BASE + 0) /* open a minor device */ |
||
928 | #define CDEV_CLOSE (CDEV_RQ_BASE + 1) /* close a minor device */ |
||
929 | #define CDEV_READ (CDEV_RQ_BASE + 2) /* read into a buffer */ |
||
930 | #define CDEV_WRITE (CDEV_RQ_BASE + 3) /* write from a buffer */ |
||
931 | #define CDEV_IOCTL (CDEV_RQ_BASE + 4) /* I/O control operation */ |
||
932 | #define CDEV_CANCEL (CDEV_RQ_BASE + 5) /* cancel suspended request */ |
||
933 | #define CDEV_SELECT (CDEV_RQ_BASE + 6) /* test for ready operations */ |
||
934 | |||
935 | /* Message types for character device responses. */
|
||
936 | #define CDEV_REPLY (CDEV_RS_BASE + 0) /* general reply code */ |
||
937 | #define CDEV_SEL1_REPLY (CDEV_RS_BASE + 1) /* immediate select reply */ |
||
938 | #define CDEV_SEL2_REPLY (CDEV_RS_BASE + 2) /* select notification reply */ |
||
939 | |||
940 | /* Bits in 'CDEV_ACCESS' field of block device open requests. */
|
||
941 | # define CDEV_R_BIT 0x01 /* open with read access */ |
||
942 | # define CDEV_W_BIT 0x02 /* open with write access */ |
||
943 | # define CDEV_NOCTTY 0x04 /* not to become the controlling TTY */ |
||
944 | |||
945 | /* Bits in 'CDEV_FLAGS' field of block device transfer requests. */
|
||
946 | # define CDEV_NOFLAGS 0x00 /* no flags are set */ |
||
947 | # define CDEV_NONBLOCK 0x01 /* do not suspend I/O request */ |
||
948 | |||
949 | /* Bits in 'CDEV_OPS', 'CDEV_STATUS' fields of block device select messages. */
|
||
950 | # define CDEV_OP_RD 0x01 /* selected for read operation */ |
||
951 | # define CDEV_OP_WR 0x02 /* selected for write operation */ |
||
952 | # define CDEV_OP_ERR 0x04 /* selected for error operation */ |
||
953 | # define CDEV_NOTIFY 0x08 /* notification requested */ |
||
954 | |||
955 | /* Bits in 'CDEV_STATUS' field of block device open responses. */
|
||
956 | # define CDEV_CLONED 0x20000000 /* device is cloned */ |
||
957 | # define CDEV_CTTY 0x40000000 /* device is controlling TTY */ |
||
958 | |||
959 | /*===========================================================================*
|
||
960 | * Messages for block devices *
|
||
961 | *===========================================================================*/
|
||
962 | |||
963 | /* Base type for block device requests and responses. */
|
||
964 | #define BDEV_RQ_BASE 0x500 |
||
965 | #define BDEV_RS_BASE 0x580 |
||
966 | |||
967 | #define IS_BDEV_RQ(type) (((type) & ~0x7f) == BDEV_RQ_BASE) |
||
968 | #define IS_BDEV_RS(type) (((type) & ~0x7f) == BDEV_RS_BASE) |
||
969 | |||
970 | /* Message types for block device requests. */
|
||
971 | #define BDEV_OPEN (BDEV_RQ_BASE + 0) /* open a minor device */ |
||
972 | #define BDEV_CLOSE (BDEV_RQ_BASE + 1) /* close a minor device */ |
||
973 | #define BDEV_READ (BDEV_RQ_BASE + 2) /* read into a buffer */ |
||
974 | #define BDEV_WRITE (BDEV_RQ_BASE + 3) /* write from a buffer */ |
||
975 | #define BDEV_GATHER (BDEV_RQ_BASE + 4) /* read into a vector */ |
||
976 | #define BDEV_SCATTER (BDEV_RQ_BASE + 5) /* write from a vector */ |
||
977 | #define BDEV_IOCTL (BDEV_RQ_BASE + 6) /* I/O control operation */ |
||
978 | |||
979 | /* Message types for block device responses. */
|
||
980 | #define BDEV_REPLY (BDEV_RS_BASE + 0) /* general reply code */ |
||
981 | |||
982 | /* Bits in 'BDEV_ACCESS' field of block device open requests. */
|
||
983 | # define BDEV_R_BIT 0x01 /* open with read access */ |
||
984 | # define BDEV_W_BIT 0x02 /* open with write access */ |
||
985 | |||
986 | /* Bits in 'BDEV_FLAGS' field of block device transfer requests. */
|
||
987 | # define BDEV_NOFLAGS 0x00 /* no flags are set */ |
||
988 | # define BDEV_FORCEWRITE 0x01 /* force write to disk immediately */ |
||
989 | # define BDEV_NOPAGE 0x02 /* eeprom: don't send page address */ |
||
990 | |||
991 | /*===========================================================================*
|
||
992 | * Messages for Real Time Clocks *
|
||
993 | *===========================================================================*/
|
||
994 | |||
995 | /* Base type for real time clock requests and responses. */
|
||
996 | #define RTCDEV_RQ_BASE 0x1400 |
||
997 | #define RTCDEV_RS_BASE 0x1480 |
||
998 | |||
999 | #define IS_RTCDEV_RQ(type) (((type) & ~0x7f) == RTCDEV_RQ_BASE) |
||
1000 | #define IS_RTCDEV_RS(type) (((type) & ~0x7f) == RTCDEV_RS_BASE) |
||
1001 | |||
1002 | /* Message types for real time clock requests. */
|
||
1003 | #define RTCDEV_GET_TIME (RTCDEV_RQ_BASE + 0) /* get time from hw clock */ |
||
1004 | #define RTCDEV_SET_TIME (RTCDEV_RQ_BASE + 1) /* set time in hw clock */ |
||
1005 | #define RTCDEV_PWR_OFF (RTCDEV_RQ_BASE + 2) /* set time to cut the power */ |
||
1006 | |||
1007 | /* Same as GET/SET above but using grants */
|
||
1008 | #define RTCDEV_GET_TIME_G (RTCDEV_RQ_BASE + 3) /* get time from hw clock */ |
||
1009 | #define RTCDEV_SET_TIME_G (RTCDEV_RQ_BASE + 4) /* set time in hw clock */ |
||
1010 | |||
1011 | /* Message types for real time clock responses. */
|
||
1012 | #define RTCDEV_REPLY (RTCDEV_RS_BASE + 0) /* general reply code */ |
||
1013 | |||
1014 | /* Bits in 'lc_readclock_rtcdev.flags' field of real time clock requests. */
|
||
1015 | #define RTCDEV_NOFLAGS 0x00 /* no flags are set */ |
||
1016 | #define RTCDEV_Y2KBUG 0x01 /* Interpret 1980 as 2000 for RTC w/Y2K bug */ |
||
1017 | #define RTCDEV_CMOSREG 0x02 /* Also set the CMOS clock register bits. */ |
||
1018 | |||
1019 | /*===========================================================================*
|
||
1020 | * Calls to MIB *
|
||
1021 | *===========================================================================*/
|
||
1022 | |||
1023 | #define MIB_BASE 0x1800 |
||
1024 | |||
1025 | #define IS_MIB_CALL(type) (((type) & ~0xff) == MIB_BASE) |
||
1026 | |||
1027 | #define MIB_SYSCTL (MIB_BASE + 0) /* sysctl(2) */ |
||
1028 | #define MIB_REGISTER (MIB_BASE + 1) /* mount subtree */ |
||
1029 | #define MIB_DEREGISTER (MIB_BASE + 2) /* unmount subtree */ |
||
1030 | |||
1031 | #define NR_MIB_CALLS 3 /* highest number from base plus one */ |
||
1032 | |||
1033 | /*===========================================================================*
|
||
1034 | * Messages for socket devices *
|
||
1035 | *===========================================================================*/
|
||
1036 | |||
1037 | /* Base type for socket device requests and responses. */
|
||
1038 | #define SDEV_RQ_BASE 0x1900 |
||
1039 | #define SDEV_RS_BASE 0x1980 |
||
1040 | |||
1041 | #define IS_SDEV_RQ(type) (((type) & ~0x7f) == SDEV_RQ_BASE) |
||
1042 | #define IS_SDEV_RS(type) (((type) & ~0x7f) == SDEV_RS_BASE) |
||
1043 | |||
1044 | /* Message types for socket device requests. */
|
||
1045 | #define SDEV_SOCKET (SDEV_RQ_BASE + 0) /* create socket */ |
||
1046 | #define SDEV_SOCKETPAIR (SDEV_RQ_BASE + 1) /* make socket pair */ |
||
1047 | #define SDEV_BIND (SDEV_RQ_BASE + 2) /* bind to address */ |
||
1048 | #define SDEV_CONNECT (SDEV_RQ_BASE + 3) /* start connection */ |
||
1049 | #define SDEV_LISTEN (SDEV_RQ_BASE + 4) /* enter listen mode */ |
||
1050 | #define SDEV_ACCEPT (SDEV_RQ_BASE + 5) /* accept connection */ |
||
1051 | #define SDEV_SEND (SDEV_RQ_BASE + 6) /* send data */ |
||
1052 | #define SDEV_RECV (SDEV_RQ_BASE + 7) /* receive data */ |
||
1053 | #define SDEV_IOCTL (SDEV_RQ_BASE + 8) /* I/O control */ |
||
1054 | #define SDEV_SETSOCKOPT (SDEV_RQ_BASE + 9) /* set socket option */ |
||
1055 | #define SDEV_GETSOCKOPT (SDEV_RQ_BASE + 10) /* get socket option */ |
||
1056 | #define SDEV_GETSOCKNAME (SDEV_RQ_BASE + 11) /* get socket name */ |
||
1057 | #define SDEV_GETPEERNAME (SDEV_RQ_BASE + 12) /* get peer name */ |
||
1058 | #define SDEV_SHUTDOWN (SDEV_RQ_BASE + 13) /* shut down I/O */ |
||
1059 | #define SDEV_CLOSE (SDEV_RQ_BASE + 14) /* close socket */ |
||
1060 | #define SDEV_CANCEL (SDEV_RQ_BASE + 15) /* cancel request */ |
||
1061 | #define SDEV_SELECT (SDEV_RQ_BASE + 16) /* select on socket */ |
||
1062 | |||
1063 | /* Message types for socket device responses. */
|
||
1064 | #define SDEV_REPLY (SDEV_RS_BASE + 0) /* generic reply */ |
||
1065 | #define SDEV_SOCKET_REPLY (SDEV_RS_BASE + 1) /* socket reply */ |
||
1066 | #define SDEV_ACCEPT_REPLY (SDEV_RS_BASE + 2) /* accept reply */ |
||
1067 | #define SDEV_RECV_REPLY (SDEV_RS_BASE + 3) /* receive reply */ |
||
1068 | #define SDEV_SELECT1_REPLY (SDEV_RS_BASE + 4) /* select reply 1 */ |
||
1069 | #define SDEV_SELECT2_REPLY (SDEV_RS_BASE + 5) /* select reply 2 */ |
||
1070 | |||
1071 | /* Bits in the 'sflags' field of socket device transfer requests. */
|
||
1072 | # define SDEV_NOFLAGS 0x00 /* no flags are set */ |
||
1073 | # define SDEV_NONBLOCK 0x01 /* do not suspend I/O request */ |
||
1074 | |||
1075 | /* Bits in the 'ops', 'status' fields of socket device select messages. */
|
||
1076 | # define SDEV_OP_RD 0x01 /* selected for read operation */ |
||
1077 | # define SDEV_OP_WR 0x02 /* selected for write operation */ |
||
1078 | # define SDEV_OP_ERR 0x04 /* selected for error operation */ |
||
1079 | # define SDEV_NOTIFY 0x08 /* notification requested */ |
||
1080 | |||
1081 | /*===========================================================================*
|
||
1082 | * Messages for network devices *
|
||
1083 | *===========================================================================*/
|
||
1084 | |||
1085 | /* Base type for network device requests and responses. */
|
||
1086 | #define NDEV_RQ_BASE 0x1A00 /* ndev -> netdriver */ |
||
1087 | #define NDEV_RS_BASE 0x1A80 /* netdriver -> ndev */ |
||
1088 | |||
1089 | #define IS_NDEV_RQ(type) (((type) & ~0x7f) == NDEV_RQ_BASE) |
||
1090 | #define IS_NDEV_RS(type) (((type) & ~0x7f) == NDEV_RS_BASE) |
||
1091 | |||
1092 | /*
|
||
1093 | * Status requests and responses travel in the opposite direction, so we group
|
||
1094 | * them with their sending party, so that the IS_NDEV_R[QS] macros can be used
|
||
1095 | * by either side to see whether the message is indeed for them.
|
||
1096 | */
|
||
1097 | #define NDEV_INIT (NDEV_RQ_BASE + 0) /* initialize driver */ |
||
1098 | #define NDEV_CONF (NDEV_RQ_BASE + 1) /* configure driver */ |
||
1099 | #define NDEV_SEND (NDEV_RQ_BASE + 2) /* send a packet */ |
||
1100 | #define NDEV_RECV (NDEV_RQ_BASE + 3) /* receive a packet */ |
||
1101 | #define NDEV_IOCTL (NDEV_RQ_BASE + 4) /* (reserved) */ |
||
1102 | #define NDEV_STATUS_REPLY (NDEV_RQ_BASE + 5) /* status reply */ |
||
1103 | |||
1104 | #define NDEV_INIT_REPLY (NDEV_RS_BASE + 0) /* initialize reply */ |
||
1105 | #define NDEV_CONF_REPLY (NDEV_RS_BASE + 1) /* configure reply */ |
||
1106 | #define NDEV_SEND_REPLY (NDEV_RS_BASE + 2) /* send reply */ |
||
1107 | #define NDEV_RECV_REPLY (NDEV_RS_BASE + 3) /* receive reply */ |
||
1108 | #define NDEV_IOCTL_REPLY (NDEV_RS_BASE + 4) /* (reserved) */ |
||
1109 | #define NDEV_STATUS (NDEV_RS_BASE + 5) /* status report */ |
||
1110 | |||
1111 | /* Bits in the 'set' field of configuration requests. */
|
||
1112 | # define NDEV_SET_MODE 0x01 /* set I/O mode and multicast list */ |
||
1113 | # define NDEV_SET_CAPS 0x02 /* enable or disable capabilities */ |
||
1114 | # define NDEV_SET_FLAGS 0x04 /* set driver-specific flags */ |
||
1115 | # define NDEV_SET_MEDIA 0x08 /* set media type */ |
||
1116 | # define NDEV_SET_HWADDR 0x10 /* change the hardware address */ |
||
1117 | |||
1118 | /* Bits in the 'mode' field of configuration requests. */
|
||
1119 | # define NDEV_MODE_DOWN 0x00 /* transmission and receipt disabled */ |
||
1120 | # define NDEV_MODE_UP 0x01 /* receive unicast packets for me */ |
||
1121 | # define NDEV_MODE_BCAST 0x02 /* receive broadcast packets */ |
||
1122 | # define NDEV_MODE_MCAST_LIST 0x04 /* receive certain multicast packets */ |
||
1123 | # define NDEV_MODE_MCAST_ALL 0x08 /* receive all multicast packets */ |
||
1124 | # define NDEV_MODE_PROMISC 0x10 /* receive all packets */ |
||
1125 | |||
1126 | /* Bits in the 'caps' field of initialization and configuration requests. */
|
||
1127 | # define NDEV_CAP_CS_IP4_TX 0x01 /* IPv4 header checksum generation */ |
||
1128 | # define NDEV_CAP_CS_IP4_RX 0x02 /* IPv4 header checksum verification */ |
||
1129 | # define NDEV_CAP_CS_UDP_TX 0x04 /* UDP header checksum generation */ |
||
1130 | # define NDEV_CAP_CS_UDP_RX 0x08 /* UDP header checksum verification */ |
||
1131 | # define NDEV_CAP_CS_TCP_TX 0x10 /* TCP header checksum generation */ |
||
1132 | # define NDEV_CAP_CS_TCP_RX 0x20 /* TCP header checksum verification */ |
||
1133 | # define NDEV_CAP_MCAST 0x20000000 /* init only: mcast capable */ |
||
1134 | # define NDEV_CAP_BCAST 0x40000000 /* init only: bcast capable */ |
||
1135 | # define NDEV_CAP_HWADDR 0x80000000 /* init only: can set hwaddr */ |
||
1136 | |||
1137 | /* Values for the 'flags' field of configuration requests. */
|
||
1138 | # define NDEV_FLAG_DEBUG 0x01 /* enable driver-specific debug mode */ |
||
1139 | # define NDEV_FLAG_LINK0 0x02 /* enable driver-specific LINK0 flag */ |
||
1140 | # define NDEV_FLAG_LINK1 0x04 /* enable driver-specific LINK1 flag */ |
||
1141 | # define NDEV_FLAG_LINK2 0x08 /* enable driver-specific LINK2 flag */ |
||
1142 | |||
1143 | /* Values for the 'link' field of initialization and status replies. */
|
||
1144 | # define NDEV_LINK_UNKNOWN 0 /* link status is unknown, assume up */ |
||
1145 | # define NDEV_LINK_UP 1 /* link is up */ |
||
1146 | # define NDEV_LINK_DOWN 2 /* link is down */ |
||
1147 | |||
1148 | /*===========================================================================*
|
||
1149 | * Internal codes used by several services *
|
||
1150 | *===========================================================================*/
|
||
1151 | |||
1152 | #define SUSPEND -998 /* status to suspend caller, reply later */ |
||
1153 | |||
1154 | #endif /* !_MINIX_COM_H */ |