com.h

Go to the documentation of this file.
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 */ 

Generated on Fri Apr 14 22:57:20 2006 for minix by  doxygen 1.4.6