root / lab4 / .minix-src / include / minix / com.h @ 14
History | View | Annotate | Download (47.7 KB)
1 |
/* 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 */ |