00001 #ifndef _MINIX_COM_H 00002 #define _MINIX_COM_H 00003 00004 /*===========================================================================* 00005 * Magic process numbers * 00006 *===========================================================================*/ 00007 00008 /* These may not be any valid endpoint (see <minix/endpoint.h>). */ 00009 #define ANY 0x7ace /* used to indicate 'any process' */ 00010 #define NONE 0x6ace /* used to indicate 'no process at all' */ 00011 #define SELF 0x8ace /* used to indicate 'own process' */ 00012 #define _MAX_MAGIC_PROC (SELF) /* used by <minix/endpoint.h> 00013 to determine generation size */ 00014 00015 /*===========================================================================* 00016 * Process numbers of processes in the system image * 00017 *===========================================================================*/ 00018 00019 /* The values of several task numbers depend on whether they or other tasks 00020 * are enabled. They are defined as (PREVIOUS_TASK - ENABLE_TASK) in general. 00021 * ENABLE_TASK is either 0 or 1, so a task either gets a new number, or gets 00022 * the same number as the previous task and is further unused. Note that the 00023 * order should correspond to the order in the task table defined in table.c. 00024 */ 00025 00026 /* Kernel tasks. These all run in the same address space. */ 00027 #define IDLE -4 /* runs when no one else can run */ 00028 #define CLOCK -3 /* alarms and other clock functions */ 00029 #define SYSTEM -2 /* request system functionality */ 00030 #define KERNEL -1 /* pseudo-process for IPC and scheduling */ 00031 #define HARDWARE KERNEL /* for hardware interrupt handlers */ 00032 00033 /* Number of tasks. Note that NR_PROCS is defined in <minix/config.h>. */ 00034 #define NR_TASKS 4 00035 00036 /* User-space processes, that is, device drivers, servers, and INIT. */ 00037 #define PM_PROC_NR 0 /* process manager */ 00038 #define FS_PROC_NR 1 /* file system */ 00039 #define RS_PROC_NR 2 /* reincarnation server */ 00040 #define MEM_PROC_NR 3 /* memory driver (RAM disk, null, etc.) */ 00041 #define LOG_PROC_NR 4 /* log device driver */ 00042 #define TTY_PROC_NR 5 /* terminal (TTY) driver */ 00043 #define DS_PROC_NR 6 /* data store server */ 00044 #define INIT_PROC_NR 7 /* init -- goes multiuser */ 00045 00046 /* Number of processes contained in the system image. */ 00047 #define NR_BOOT_PROCS (NR_TASKS + INIT_PROC_NR + 1) 00048 00049 /*===========================================================================* 00050 * Kernel notification types * 00051 *===========================================================================*/ 00052 00053 /* Kernel notification types. In principle, these can be sent to any process, 00054 * so make sure that these types do not interfere with other message types. 00055 * Notifications are prioritized because of the way they are unhold() and 00056 * blocking notifications are delivered. The lowest numbers go first. The 00057 * offset are used for the per-process notification bit maps. 00058 */ 00059 #define NOTIFY_MESSAGE 0x1000 00060 #define NOTIFY_FROM(p_nr) (NOTIFY_MESSAGE | ((p_nr) + NR_TASKS)) 00061 # define PROC_EVENT NOTIFY_FROM(PM_PROC_NR) /* process status change */ 00062 # define SYN_ALARM NOTIFY_FROM(CLOCK) /* synchronous alarm */ 00063 # define SYS_SIG NOTIFY_FROM(SYSTEM) /* system signal */ 00064 # define HARD_INT NOTIFY_FROM(HARDWARE) /* hardware interrupt */ 00065 # define NEW_KSIG NOTIFY_FROM(HARDWARE) /* new kernel signal */ 00066 # define FKEY_PRESSED NOTIFY_FROM(TTY_PROC_NR)/* function key press */ 00067 # define DEV_PING NOTIFY_FROM(RS_PROC_NR) /* driver liveness ping */ 00068 00069 /* Shorthands for message parameters passed with notifications. */ 00070 #define NOTIFY_SOURCE m_source 00071 #define NOTIFY_TYPE m_type 00072 #define NOTIFY_ARG m2_l1 00073 #define NOTIFY_TIMESTAMP m2_l2 00074 #define NOTIFY_FLAGS m2_i1 00075 00076 /*===========================================================================* 00077 * Messages for BUS controller drivers * 00078 *===========================================================================*/ 00079 #define BUSC_RQ_BASE 0x300 /* base for request types */ 00080 #define BUSC_RS_BASE 0x380 /* base for response types */ 00081 00082 #define BUSC_PCI_INIT (BUSC_RQ_BASE + 0) /* First message to 00083 * PCI driver 00084 */ 00085 #define BUSC_PCI_FIRST_DEV (BUSC_RQ_BASE + 1) /* Get index (and 00086 * vid/did) of the 00087 * first PCI device 00088 */ 00089 #define BUSC_PCI_NEXT_DEV (BUSC_RQ_BASE + 2) /* Get index (and 00090 * vid/did) of the 00091 * next PCI device 00092 */ 00093 #define BUSC_PCI_FIND_DEV (BUSC_RQ_BASE + 3) /* Get index of a 00094 * PCI device based on 00095 * bus/dev/function 00096 */ 00097 #define BUSC_PCI_IDS (BUSC_RQ_BASE + 4) /* Get vid/did from an 00098 * index 00099 */ 00100 #define BUSC_PCI_DEV_NAME (BUSC_RQ_BASE + 5) /* Get the name of a 00101 * PCI device 00102 */ 00103 #define BUSC_PCI_SLOT_NAME (BUSC_RQ_BASE + 6) /* Get the name of a 00104 * PCI slot 00105 */ 00106 #define BUSC_PCI_RESERVE (BUSC_RQ_BASE + 7) /* Reserve a PCI dev */ 00107 #define BUSC_PCI_ATTR_R8 (BUSC_RQ_BASE + 8) /* Read 8-bit 00108 * attribute value 00109 */ 00110 #define BUSC_PCI_ATTR_R16 (BUSC_RQ_BASE + 9) /* Read 16-bit 00111 * attribute value 00112 */ 00113 #define BUSC_PCI_ATTR_R32 (BUSC_RQ_BASE + 10) /* Read 32-bit 00114 * attribute value 00115 */ 00116 #define BUSC_PCI_ATTR_W8 (BUSC_RQ_BASE + 11) /* Write 8-bit 00117 * attribute value 00118 */ 00119 #define BUSC_PCI_ATTR_W16 (BUSC_RQ_BASE + 12) /* Write 16-bit 00120 * attribute value 00121 */ 00122 #define BUSC_PCI_ATTR_W32 (BUSC_RQ_BASE + 13) /* Write 32-bit 00123 * attribute value 00124 */ 00125 #define BUSC_PCI_RESCAN (BUSC_RQ_BASE + 14) /* Rescan bus */ 00126 00127 /*===========================================================================* 00128 * Messages for BLOCK and CHARACTER device drivers * 00129 *===========================================================================*/ 00130 00131 /* Message types for device drivers. */ 00132 #define DEV_RQ_BASE 0x400 /* base for device request types */ 00133 #define DEV_RS_BASE 0x500 /* base for device response types */ 00134 00135 #define CANCEL (DEV_RQ_BASE + 0) /* force a task to cancel */ 00136 #define DEV_READ (DEV_RQ_BASE + 3) /* read from minor device */ 00137 #define DEV_WRITE (DEV_RQ_BASE + 4) /* write to minor device */ 00138 #define DEV_IOCTL (DEV_RQ_BASE + 5) /* I/O control code */ 00139 #define DEV_OPEN (DEV_RQ_BASE + 6) /* open a minor device */ 00140 #define DEV_CLOSE (DEV_RQ_BASE + 7) /* close a minor device */ 00141 #define DEV_SCATTER (DEV_RQ_BASE + 8) /* write from a vector */ 00142 #define DEV_GATHER (DEV_RQ_BASE + 9) /* read into a vector */ 00143 #define TTY_SETPGRP (DEV_RQ_BASE + 10) /* set process group */ 00144 #define TTY_EXIT (DEV_RQ_BASE + 11) /* process group leader exited */ 00145 #define DEV_SELECT (DEV_RQ_BASE + 12) /* request select() attention */ 00146 #define DEV_STATUS (DEV_RQ_BASE + 13) /* request driver status */ 00147 00148 #define DEV_REPLY (DEV_RS_BASE + 0) /* general task reply */ 00149 #define DEV_CLONED (DEV_RS_BASE + 1) /* return cloned minor */ 00150 #define DEV_REVIVE (DEV_RS_BASE + 2) /* driver revives process */ 00151 #define DEV_IO_READY (DEV_RS_BASE + 3) /* selected device ready */ 00152 #define DEV_NO_STATUS (DEV_RS_BASE + 4) /* empty status reply */ 00153 00154 /* Field names for messages to block and character device drivers. */ 00155 #define DEVICE m2_i1 /* major-minor device */ 00156 #define IO_ENDPT m2_i2 /* which (proc/endpoint) wants I/O? */ 00157 #define COUNT m2_i3 /* how many bytes to transfer */ 00158 #define REQUEST m2_i3 /* ioctl request code */ 00159 #define POSITION m2_l1 /* file offset */ 00160 #define ADDRESS m2_p1 /* core buffer address */ 00161 00162 /* Field names for DEV_SELECT messages to device drivers. */ 00163 #define DEV_MINOR m2_i1 /* minor device */ 00164 #define DEV_SEL_OPS m2_i2 /* which select operations are requested */ 00165 #define DEV_SEL_WATCH m2_i3 /* request notify if no operations are ready */ 00166 00167 /* Field names used in reply messages from tasks. */ 00168 #define REP_ENDPT m2_i1 /* # of proc on whose behalf I/O was done */ 00169 #define REP_STATUS m2_i2 /* bytes transferred or error number */ 00170 # define SUSPEND -998 /* status to suspend caller, reply later */ 00171 00172 /* Field names for messages to TTY driver. */ 00173 #define TTY_LINE DEVICE /* message parameter: terminal line */ 00174 #define TTY_REQUEST COUNT /* message parameter: ioctl request code */ 00175 #define TTY_SPEK POSITION/* message parameter: ioctl speed, erasing */ 00176 #define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */ 00177 #define TTY_PGRP m2_i3 /* message parameter: process group */ 00178 00179 /* Field names for the QIC 02 status reply from tape driver */ 00180 #define TAPE_STAT0 m2_l1 00181 #define TAPE_STAT1 m2_l2 00182 00183 /*===========================================================================* 00184 * Messages for networking layer * 00185 *===========================================================================*/ 00186 00187 /* Message types for network layer requests. This layer acts like a driver. */ 00188 #define NW_OPEN DEV_OPEN 00189 #define NW_CLOSE DEV_CLOSE 00190 #define NW_READ DEV_READ 00191 #define NW_WRITE DEV_WRITE 00192 #define NW_IOCTL DEV_IOCTL 00193 #define NW_CANCEL CANCEL 00194 00195 /* Base type for data link layer requests and responses. */ 00196 #define DL_RQ_BASE 0x800 00197 #define DL_RS_BASE 0x900 00198 00199 /* Message types for data link layer requests. */ 00200 #define DL_WRITE (DL_RQ_BASE + 3) 00201 #define DL_WRITEV (DL_RQ_BASE + 4) 00202 #define DL_READ (DL_RQ_BASE + 5) 00203 #define DL_READV (DL_RQ_BASE + 6) 00204 #define DL_INIT (DL_RQ_BASE + 7) 00205 #define DL_STOP (DL_RQ_BASE + 8) 00206 #define DL_GETSTAT (DL_RQ_BASE + 9) 00207 #define DL_GETNAME (DL_RQ_BASE +10) 00208 00209 /* Message type for data link layer replies. */ 00210 #define DL_INIT_REPLY (DL_RS_BASE + 20) 00211 #define DL_TASK_REPLY (DL_RS_BASE + 21) 00212 #define DL_NAME_REPLY (DL_RS_BASE + 22) 00213 00214 /* Field names for data link layer messages. */ 00215 #define DL_PORT m2_i1 00216 #define DL_PROC m2_i2 /* endpoint */ 00217 #define DL_COUNT m2_i3 00218 #define DL_MODE m2_l1 00219 #define DL_CLCK m2_l2 00220 #define DL_ADDR m2_p1 00221 #define DL_STAT m2_l1 00222 #define DL_NAME m3_ca1 00223 00224 /* Bits in 'DL_STAT' field of DL replies. */ 00225 # define DL_PACK_SEND 0x01 00226 # define DL_PACK_RECV 0x02 00227 # define DL_READ_IP 0x04 00228 00229 /* Bits in 'DL_MODE' field of DL requests. */ 00230 # define DL_NOMODE 0x0 00231 # define DL_PROMISC_REQ 0x2 00232 # define DL_MULTI_REQ 0x4 00233 # define DL_BROAD_REQ 0x8 00234 00235 /*===========================================================================* 00236 * SYSTASK request types and field names * 00237 *===========================================================================*/ 00238 00239 /* System library calls are dispatched via a call vector, so be careful when 00240 * modifying the system call numbers. The numbers here determine which call 00241 * is made from the call vector. 00242 */ 00243 #define KERNEL_CALL 0x600 /* base for kernel calls to SYSTEM */ 00244 00245 # define SYS_FORK (KERNEL_CALL + 0) /* sys_fork() */ 00246 # define SYS_EXEC (KERNEL_CALL + 1) /* sys_exec() */ 00247 # define SYS_EXIT (KERNEL_CALL + 2) /* sys_exit() */ 00248 # define SYS_NICE (KERNEL_CALL + 3) /* sys_nice() */ 00249 # define SYS_PRIVCTL (KERNEL_CALL + 4) /* sys_privctl() */ 00250 # define SYS_TRACE (KERNEL_CALL + 5) /* sys_trace() */ 00251 # define SYS_KILL (KERNEL_CALL + 6) /* sys_kill() */ 00252 00253 # define SYS_GETKSIG (KERNEL_CALL + 7) /* sys_getsig() */ 00254 # define SYS_ENDKSIG (KERNEL_CALL + 8) /* sys_endsig() */ 00255 # define SYS_SIGSEND (KERNEL_CALL + 9) /* sys_sigsend() */ 00256 # define SYS_SIGRETURN (KERNEL_CALL + 10) /* sys_sigreturn() */ 00257 00258 # define SYS_NEWMAP (KERNEL_CALL + 11) /* sys_newmap() */ 00259 # define SYS_SEGCTL (KERNEL_CALL + 12) /* sys_segctl() */ 00260 # define SYS_MEMSET (KERNEL_CALL + 13) /* sys_memset() */ 00261 00262 # define SYS_UMAP (KERNEL_CALL + 14) /* sys_umap() */ 00263 # define SYS_VIRCOPY (KERNEL_CALL + 15) /* sys_vircopy() */ 00264 # define SYS_PHYSCOPY (KERNEL_CALL + 16) /* sys_physcopy() */ 00265 # define SYS_VIRVCOPY (KERNEL_CALL + 17) /* sys_virvcopy() */ 00266 # define SYS_PHYSVCOPY (KERNEL_CALL + 18) /* sys_physvcopy() */ 00267 00268 # define SYS_IRQCTL (KERNEL_CALL + 19) /* sys_irqctl() */ 00269 # define SYS_INT86 (KERNEL_CALL + 20) /* sys_int86() */ 00270 # define SYS_DEVIO (KERNEL_CALL + 21) /* sys_devio() */ 00271 # define SYS_SDEVIO (KERNEL_CALL + 22) /* sys_sdevio() */ 00272 # define SYS_VDEVIO (KERNEL_CALL + 23) /* sys_vdevio() */ 00273 00274 # define SYS_SETALARM (KERNEL_CALL + 24) /* sys_setalarm() */ 00275 # define SYS_TIMES (KERNEL_CALL + 25) /* sys_times() */ 00276 # define SYS_GETINFO (KERNEL_CALL + 26) /* sys_getinfo() */ 00277 # define SYS_ABORT (KERNEL_CALL + 27) /* sys_abort() */ 00278 # define SYS_IOPENABLE (KERNEL_CALL + 28) /* sys_enable_iop() */ 00279 # define SYS_VM_SETBUF (KERNEL_CALL + 29) /* sys_vm_setbuf() */ 00280 # define SYS_VM_MAP (KERNEL_CALL + 30) /* sys_vm_map() */ 00281 00282 #define NR_SYS_CALLS 31 /* number of system calls */ 00283 00284 /* Subfunctions for SYS_PRIVCTL */ 00285 #define SYS_PRIV_INIT 1 /* Initialize a privilege structure */ 00286 #define SYS_PRIV_ADD_IO 2 /* Add I/O range (struct io_range) */ 00287 #define SYS_PRIV_ADD_MEM 3 /* Add memory range (struct mem_range) 00288 */ 00289 #define SYS_PRIV_ADD_IRQ 4 /* Add IRQ */ 00290 00291 /* Field names for SYS_MEMSET, SYS_SEGCTL. */ 00292 #define MEM_PTR m2_p1 /* base */ 00293 #define MEM_COUNT m2_l1 /* count */ 00294 #define MEM_PATTERN m2_l2 /* pattern to write */ 00295 #define MEM_CHUNK_BASE m4_l1 /* physical base address */ 00296 #define MEM_CHUNK_SIZE m4_l2 /* size of mem chunk */ 00297 #define MEM_TOT_SIZE m4_l3 /* total memory size */ 00298 #define MEM_CHUNK_TAG m4_l4 /* tag to identify chunk of mem */ 00299 00300 /* Field names for SYS_DEVIO, SYS_VDEVIO, SYS_SDEVIO. */ 00301 #define DIO_REQUEST m2_i3 /* device in or output */ 00302 # define DIO_INPUT 0 /* input */ 00303 # define DIO_OUTPUT 1 /* output */ 00304 #define DIO_TYPE m2_i1 /* flag indicating byte, word, or long */ 00305 # define DIO_BYTE 'b' /* byte type values */ 00306 # define DIO_WORD 'w' /* word type values */ 00307 # define DIO_LONG 'l' /* long type values */ 00308 #define DIO_PORT m2_l1 /* single port address */ 00309 #define DIO_VALUE m2_l2 /* single I/O value */ 00310 #define DIO_VEC_ADDR m2_p1 /* address of buffer or (p,v)-pairs */ 00311 #define DIO_VEC_SIZE m2_l2 /* number of elements in vector */ 00312 #define DIO_VEC_ENDPT m2_i2 /* number of process where vector is */ 00313 00314 /* Field names for SYS_SIGNARLM, SYS_FLAGARLM, SYS_SYNCALRM. */ 00315 #define ALRM_EXP_TIME m2_l1 /* expire time for the alarm call */ 00316 #define ALRM_ABS_TIME m2_i2 /* set to 1 to use absolute alarm time */ 00317 #define ALRM_TIME_LEFT m2_l1 /* how many ticks were remaining */ 00318 #define ALRM_ENDPT m2_i1 /* which process wants the alarm? */ 00319 #define ALRM_FLAG_PTR m2_p1 /* virtual address of timeout flag */ 00320 00321 /* Field names for SYS_IRQCTL. */ 00322 #define IRQ_REQUEST m5_c1 /* what to do? */ 00323 # define IRQ_SETPOLICY 1 /* manage a slot of the IRQ table */ 00324 # define IRQ_RMPOLICY 2 /* remove a slot of the IRQ table */ 00325 # define IRQ_ENABLE 3 /* enable interrupts */ 00326 # define IRQ_DISABLE 4 /* disable interrupts */ 00327 #define IRQ_VECTOR m5_c2 /* irq vector */ 00328 #define IRQ_POLICY m5_i1 /* options for IRQCTL request */ 00329 # define IRQ_REENABLE 0x001 /* reenable IRQ line after interrupt */ 00330 # define IRQ_BYTE 0x100 /* byte values */ 00331 # define IRQ_WORD 0x200 /* word values */ 00332 # define IRQ_LONG 0x400 /* long values */ 00333 #define IRQ_ENDPT m5_i2 /* endpoint number, SELF, NONE */ 00334 #define IRQ_HOOK_ID m5_l3 /* id of irq hook at kernel */ 00335 00336 /* Field names for SYS_SEGCTL. */ 00337 #define SEG_SELECT m4_l1 /* segment selector returned */ 00338 #define SEG_OFFSET m4_l2 /* offset in segment returned */ 00339 #define SEG_PHYS m4_l3 /* physical address of segment */ 00340 #define SEG_SIZE m4_l4 /* segment size */ 00341 #define SEG_INDEX m4_l5 /* segment index in remote map */ 00342 00343 /* Field names for SYS_VIDCOPY. */ 00344 #define VID_REQUEST m4_l1 /* what to do? */ 00345 # define VID_VID_COPY 1 /* request vid_vid_copy() */ 00346 # define MEM_VID_COPY 2 /* request mem_vid_copy() */ 00347 #define VID_SRC_ADDR m4_l2 /* virtual address in memory */ 00348 #define VID_SRC_OFFSET m4_l3 /* offset in video memory */ 00349 #define VID_DST_OFFSET m4_l4 /* offset in video memory */ 00350 #define VID_CP_COUNT m4_l5 /* number of words to be copied */ 00351 00352 /* Field names for SYS_ABORT. */ 00353 #define ABRT_HOW m1_i1 /* RBT_REBOOT, RBT_HALT, etc. */ 00354 #define ABRT_MON_ENDPT m1_i2 /* process where monitor params are */ 00355 #define ABRT_MON_LEN m1_i3 /* length of monitor params */ 00356 #define ABRT_MON_ADDR m1_p1 /* virtual address of monitor params */ 00357 00358 /* Field names for _UMAP, _VIRCOPY, _PHYSCOPY. */ 00359 #define CP_SRC_SPACE m5_c1 /* T or D space (stack is also D) */ 00360 #define CP_SRC_ENDPT m5_i1 /* process to copy from */ 00361 #define CP_SRC_ADDR m5_l1 /* address where data come from */ 00362 #define CP_DST_SPACE m5_c2 /* T or D space (stack is also D) */ 00363 #define CP_DST_ENDPT m5_i2 /* process to copy to */ 00364 #define CP_DST_ADDR m5_l2 /* address where data go to */ 00365 #define CP_NR_BYTES m5_l3 /* number of bytes to copy */ 00366 00367 /* Field names for SYS_VCOPY and SYS_VVIRCOPY. */ 00368 #define VCP_NR_OK m1_i2 /* number of successfull copies */ 00369 #define VCP_VEC_SIZE m1_i3 /* size of copy vector */ 00370 #define VCP_VEC_ADDR m1_p1 /* pointer to copy vector */ 00371 00372 /* Field names for SYS_GETINFO. */ 00373 #define I_REQUEST m7_i3 /* what info to get */ 00374 # define GET_KINFO 0 /* get kernel information structure */ 00375 # define GET_IMAGE 1 /* get system image table */ 00376 # define GET_PROCTAB 2 /* get kernel process table */ 00377 # define GET_RANDOMNESS 3 /* get randomness buffer */ 00378 # define GET_MONPARAMS 4 /* get monitor parameters */ 00379 # define GET_KENV 5 /* get kernel environment string */ 00380 # define GET_IRQHOOKS 6 /* get the IRQ table */ 00381 # define GET_KMESSAGES 7 /* get kernel messages */ 00382 # define GET_PRIVTAB 8 /* get kernel privileges table */ 00383 # define GET_KADDRESSES 9 /* get various kernel addresses */ 00384 # define GET_SCHEDINFO 10 /* get scheduling queues */ 00385 # define GET_PROC 11 /* get process slot if given process */ 00386 # define GET_MACHINE 12 /* get machine information */ 00387 # define GET_LOCKTIMING 13 /* get lock()/unlock() latency timing */ 00388 # define GET_BIOSBUFFER 14 /* get a buffer for BIOS calls */ 00389 # define GET_LOADINFO 15 /* get load average information */ 00390 #define I_ENDPT m7_i4 /* calling process */ 00391 #define I_VAL_PTR m7_p1 /* virtual address at caller */ 00392 #define I_VAL_LEN m7_i1 /* max length of value */ 00393 #define I_VAL_PTR2 m7_p2 /* second virtual address */ 00394 #define I_VAL_LEN2_E m7_i2 /* second length, or proc nr */ 00395 # define GET_IRQACTIDS 16 /* get the IRQ masks */ 00396 00397 /* Field names for SYS_TIMES. */ 00398 #define T_ENDPT m4_l1 /* process to request time info for */ 00399 #define T_USER_TIME m4_l1 /* user time consumed by process */ 00400 #define T_SYSTEM_TIME m4_l2 /* system time consumed by process */ 00401 #define T_CHILD_UTIME m4_l3 /* user time consumed by process' children */ 00402 #define T_CHILD_STIME m4_l4 /* sys time consumed by process' children */ 00403 #define T_BOOT_TICKS m4_l5 /* number of clock ticks since boot time */ 00404 00405 /* vm_map */ 00406 #define VM_MAP_ENDPT m4_l1 00407 #define VM_MAP_MAPUNMAP m4_l2 00408 #define VM_MAP_BASE m4_l3 00409 #define VM_MAP_SIZE m4_l4 00410 #define VM_MAP_ADDR m4_l5 00411 00412 /* Field names for SYS_TRACE, SYS_PRIVCTL. */ 00413 #define CTL_ENDPT m2_i1 /* process number of the caller */ 00414 #define CTL_REQUEST m2_i2 /* server control request */ 00415 #define CTL_MM_PRIV m2_i3 /* privilege as seen by PM */ 00416 #define CTL_ARG_PTR m2_p1 /* pointer to argument */ 00417 #define CTL_ADDRESS m2_l1 /* address at traced process' space */ 00418 #define CTL_DATA m2_l2 /* data field for tracing */ 00419 00420 /* Field names for SYS_KILL, SYS_SIGCTL */ 00421 #define SIG_REQUEST m2_l2 /* PM signal control request */ 00422 #define S_GETSIG 0 /* get pending kernel signal */ 00423 #define S_ENDSIG 1 /* finish a kernel signal */ 00424 #define S_SENDSIG 2 /* POSIX style signal handling */ 00425 #define S_SIGRETURN 3 /* return from POSIX handling */ 00426 #define S_KILL 4 /* servers kills process with signal */ 00427 #define SIG_ENDPT m2_i1 /* process number for inform */ 00428 #define SIG_NUMBER m2_i2 /* signal number to send */ 00429 #define SIG_FLAGS m2_i3 /* signal flags field */ 00430 #define SIG_MAP m2_l1 /* used by kernel to pass signal bit map */ 00431 #define SIG_CTXT_PTR m2_p1 /* pointer to info to restore signal context */ 00432 00433 /* Field names for SYS_FORK, _EXEC, _EXIT, _NEWMAP. */ 00434 #define PR_ENDPT m1_i1 /* indicates a process */ 00435 #define PR_PRIORITY m1_i2 /* process priority */ 00436 #define PR_SLOT m1_i2 /* indicates a process slot */ 00437 #define PR_PID m1_i3 /* process id at process manager */ 00438 #define PR_STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */ 00439 #define PR_TRACING m1_i3 /* flag to indicate tracing is on/ off */ 00440 #define PR_NAME_PTR m1_p2 /* tells where program name is for dmp */ 00441 #define PR_IP_PTR m1_p3 /* initial value for ip after exec */ 00442 #define PR_MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */ 00443 00444 /* Field names for SYS_INT86 */ 00445 #define INT86_REG86 m1_p1 /* pointer to registers */ 00446 00447 /* Field names for SELECT (FS). */ 00448 #define SEL_NFDS m8_i1 00449 #define SEL_READFDS m8_p1 00450 #define SEL_WRITEFDS m8_p2 00451 #define SEL_ERRORFDS m8_p3 00452 #define SEL_TIMEOUT m8_p4 00453 00454 /*===========================================================================* 00455 * Messages for the Reincarnation Server * 00456 *===========================================================================*/ 00457 00458 #define RS_RQ_BASE 0x700 00459 00460 #define RS_UP (RS_RQ_BASE + 0) /* start system service */ 00461 #define RS_DOWN (RS_RQ_BASE + 1) /* stop system service */ 00462 #define RS_REFRESH (RS_RQ_BASE + 2) /* restart system service */ 00463 #define RS_RESCUE (RS_RQ_BASE + 3) /* set rescue directory */ 00464 #define RS_SHUTDOWN (RS_RQ_BASE + 4) /* alert about shutdown */ 00465 00466 # define RS_CMD_ADDR m1_p1 /* command string */ 00467 # define RS_CMD_LEN m1_i1 /* length of command */ 00468 # define RS_PID m1_i1 /* pid of system service */ 00469 # define RS_PERIOD m1_i2 /* heartbeat period */ 00470 # define RS_DEV_MAJOR m1_i3 /* major device number */ 00471 00472 /*===========================================================================* 00473 * Messages for the Data Store Server * 00474 *===========================================================================*/ 00475 00476 #define DS_RQ_BASE 0x800 00477 00478 #define DS_PUBLISH (DS_RQ_BASE + 0) /* publish information */ 00479 #define DS_RETRIEVE (DS_RQ_BASE + 1) /* retrieve information */ 00480 #define DS_SUBSCRIBE (DS_RQ_BASE + 2) /* subscribe to information */ 00481 00482 # define DS_KEY m2_i1 /* key for the information */ 00483 # define DS_FLAGS m2_i2 /* flags provided by caller */ 00484 # define DS_AUTH m2_p1 /* authorization of caller */ 00485 # define DS_VAL_L1 m2_l1 /* first long data value */ 00486 # define DS_VAL_L2 m2_l2 /* second long data value */ 00487 00488 /*===========================================================================* 00489 * Miscellaneous messages used by TTY * 00490 *===========================================================================*/ 00491 00492 /* Miscellaneous request types and field names, e.g. used by IS server. */ 00493 #define FKEY_CONTROL 98 /* control a function key at the TTY */ 00494 # define FKEY_REQUEST m2_i1 /* request to perform at TTY */ 00495 # define FKEY_MAP 10 /* observe function key */ 00496 # define FKEY_UNMAP 11 /* stop observing function key */ 00497 # define FKEY_EVENTS 12 /* request open key presses */ 00498 # define FKEY_FKEYS m2_l1 /* F1-F12 keys pressed */ 00499 # define FKEY_SFKEYS m2_l2 /* Shift-F1-F12 keys pressed */ 00500 #define DIAGNOSTICS 100 /* output a string without FS in between */ 00501 # define DIAG_PRINT_BUF m1_p1 00502 # define DIAG_BUF_COUNT m1_i1 00503 # define DIAG_ENDPT m1_i2 00504 #define GET_KMESS 101 /* get kmess from TTY */ 00505 # define GETKM_PTR m1_p1 00506 00507 00508 #endif /* _MINIX_COM_H */
1.4.6