2 #define SEND 1 /* function code for sending messages */
3 #define RECEIVE 2 /* function code for receiving messages */
4 #define BOTH 3 /* function code for SEND + RECEIVE */
5 #define ANY (NR_PROCS+100) /* receive(ANY, buf) accepts from any source */
7 /* Task numbers, function codes and reply codes. */
9 #define TTY -NR_TASKS /* terminal I/O class */
10 # define TTY_READ 3 /* fcn code for reading from tty */
11 # define TTY_WRITE 4 /* fcn code for writing to tty */
12 # define TTY_IOCTL 5 /* fcn code for ioctl */
13 # define TTY_SETPGRP 6 /* fcn code for setpgrp */
14 # define TTY_OPEN 7 /* fcn code for opening tty */
15 # define TTY_CLOSE 8 /* fcn code for closing tty */
16 # define SUSPEND -998 /* used in interrupts when tty has no data */
24 /* There are AM_NTASK copies of the amoeba kernel task.
25 * If you change AM_NTASKS be sure to adjust kernel/table.c and fs/table.c
27 #define AM_NTASKS 4 /* number of kernel tasks of this class */
29 #define AMINT_CLASS (TTY+1) /* Amoeba event handler */
30 #define AMOEBA_CLASS (AMINT_CLASS+AM_NTASKS) /* transaction handlers */
31 # define ETHER_ARRIV 1 /* fcn code for packet arrival */
32 # define AM_TRANS 2 /* amoeba transaction */
33 # define AM_GETREQ 3 /* amoeba getrequest */
34 # define AM_PUTREP 4 /* amoeba putrep */
35 # define AM_REVIVE 6 /* used by kernel task to revive luser task */
36 # define AM_TIMEOUT 8 /* used to talk to clock task */
37 # define AM_PUTSIG 9 /* when the luser hits the DEL ! */
38 # define AM_TASK_DIED 10 /* sent if task died during a transaction */
40 #else /* if AMOEBA not defined */
42 #define AMOEBA_CLASS TTY
47 * New class definitions should go here and should be defined relative
48 * to AMOEBA_CLASS (ie. as AMOEBA_CLASS+n, for the nth task added).
51 #define IDLE (AMOEBA_CLASS+1) /* task to run when there's nothing to run */
53 #define PRINTER -7 /* printer I/O class */
54 /* The printer uses the same commands as TTY. */
56 #define WINCHESTER -6 /* winchester (hard) disk class */
57 #define FLOPPY -5 /* floppy disk class */
58 # define DISK_READ 3 /* fcn code to DISK (must equal TTY_READ) */
59 # define DISK_WRITE 4 /* fcn code to DISK (must equal TTY_WRITE) */
60 # define DISK_IOCTL 5 /* fcn code for setting up RAM disk */
61 # define SCATTERED_IO 6 /* fcn code for multiple reads/writes */
62 # define OPTIONAL_IO 16 /* modifier to DISK_* codes within vector */
64 #define MEM -4 /* /dev/ram, /dev/(k)mem and /dev/null class */
65 # define RAM_DEV 0 /* minor device for /dev/ram */
66 # define MEM_DEV 1 /* minor device for /dev/mem */
67 # define KMEM_DEV 2 /* minor device for /dev/kmem */
68 # define NULL_DEV 3 /* minor device for /dev/null */
70 # define PORT_DEV 4 /* minor device for /dev/port */
73 #define CLOCK -3 /* clock class */
74 # define SET_ALARM 1 /* fcn code to CLOCK, set up alarm */
75 # define GET_TIME 3 /* fcn code to CLOCK, get real time */
76 # define SET_TIME 4 /* fcn code to CLOCK, set real time */
77 # define REAL_TIME 1 /* reply from CLOCK: here is real time */
79 #define SYSTASK -2 /* internal functions */
80 # define SYS_XIT 1 /* fcn code for sys_xit(parent, proc) */
81 # define SYS_GETSP 2 /* fcn code for sys_sp(proc, &new_sp) */
82 # define SYS_SIG 3 /* fcn code for sys_sig(proc, sig) */
83 # define SYS_FORK 4 /* fcn code for sys_fork(parent, child) */
84 # define SYS_NEWMAP 5 /* fcn code for sys_newmap(procno, map_ptr) */
85 # define SYS_COPY 6 /* fcn code for sys_copy(ptr) */
86 # define SYS_EXEC 7 /* fcn code for sys_exec(procno, new_sp) */
87 # define SYS_TIMES 8 /* fcn code for sys_times(procno, bufptr) */
88 # define SYS_ABORT 9 /* fcn code for sys_abort() */
89 # define SYS_FRESH 10 /* fcn code for sys_fresh() (Atari only) */
90 # define SYS_KILL 11 /* fcn code for sys_kill(proc, sig) */
91 # define SYS_GBOOT 12 /* fcn code for sys_gboot(procno, bootptr) */
92 # define SYS_UMAP 13 /* fcn code for sys_umap(procno, etc) */
93 # define SYS_MEM 14 /* fcn code for sys_mem() */
94 # define SYS_TRACE 15 /* fcn code for sys_trace(req,pid,addr,data) */
96 #define HARDWARE -1 /* used as source on interrupt generated msgs*/
98 /* Names of message fields for messages to CLOCK task. */
99 #define DELTA_TICKS m6_l1 /* alarm interval in clock ticks */
100 #define FUNC_TO_CALL m6_f1 /* pointer to function to call */
101 #define NEW_TIME m6_l1 /* value to set clock to (SET_TIME) */
102 #define CLOCK_PROC_NR m6_i1 /* which proc (or task) wants the alarm? */
103 #define SECONDS_LEFT m6_l1 /* how many seconds were remaining */
105 /* Names of message fields used for messages to block and character tasks. */
106 #define DEVICE m2_i1 /* major-minor device */
107 #define PROC_NR m2_i2 /* which (proc) wants I/O? */
108 #define COUNT m2_i3 /* how many bytes to transfer */
109 #define POSITION m2_l1 /* file offset */
110 #define ADDRESS m2_p1 /* core buffer address */
112 /* Names of message fields for messages to TTY task. */
113 #define TTY_LINE m2_i1 /* message parameter: terminal line */
114 #define TTY_REQUEST m2_i3 /* message parameter: ioctl request code */
115 #define TTY_SPEK m2_l1 /* message parameter: ioctl speed, erasing */
116 #define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */
117 #define TTY_PGRP m2_i3 /* message parameter: process group */
119 /* Names of messages fields used in reply messages from tasks. */
120 #define REP_PROC_NR m2_i1 /* # of proc on whose behalf I/O was done */
121 #define REP_STATUS m2_i2 /* bytes transferred or error number */
123 /* Names of fields for copy message to SYSTASK. */
124 #define SRC_SPACE m5_c1 /* T or D space (stack is also D) */
125 #define SRC_PROC_NR m5_i1 /* process to copy from */
126 #define SRC_BUFFER m5_l1 /* virtual address where data come from */
127 #define DST_SPACE m5_c2 /* T or D space (stack is also D) */
128 #define DST_PROC_NR m5_i2 /* process to copy to */
129 #define DST_BUFFER m5_l2 /* virtual address where data go to */
130 #define COPY_BYTES m5_l3 /* number of bytes to copy */
132 /* Field names for accounting, SYSTASK and miscellaneous. */
133 #define USER_TIME m4_l1 /* user time consumed by process */
134 #define SYSTEM_TIME m4_l2 /* system time consumed by process */
135 #define CHILD_UTIME m4_l3 /* user time consumed by process' children */
136 #define CHILD_STIME m4_l4 /* sys time consumed by process' children */
138 #define PROC1 m1_i1 /* indicates a process */
139 #define PROC2 m1_i2 /* indicates a process */
140 #define PID m1_i3 /* process id passed from MM to kernel */
141 #define STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */
142 #define PR m6_i1 /* process number for sys_sig */
143 #define SIGNUM m6_i2 /* signal number for sys_sig */
144 #define FUNC m6_f1 /* function pointer for sys_sig */
145 #define MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
146 #define CANCEL 0 /* general request to force a task to cancel */
147 #define SIG_MAP m1_i2 /* used by kernel for passing signal bit map */
151 /* Names of message fields for amoeba tasks */
152 #define AM_OP m2_i1 /* one of the above operators */
153 #define AM_PROC_NR m2_i2 /* process # of proc doing operation */
154 #define AM_COUNT m2_i3 /* size of buffer for operation */
155 #define AM_ADDRESS m2_p1 /* address of buffer for operation */
157 /* For communication between MM and AMOEBA_CLASS kernel tasks */
158 #define AM_STATUS m2_i3 /* same use as REP_STATUS but for amoeba */
159 #define AM_FREE_IT m2_l1 /* 1=not a getreq, 0=is a getreq */
161 /* Special for passing a physical address from the ethernet driver */
162 #define AM_PADDR m2_l1 /* to the transaction layer */
166 #define HARD_INT 2 /* fcn code for all hardware interrupts */