ast@cs.vu.nl (Andy Tanenbaum) (06/12/91)
echo x - boot.h.cdif
sed '/^X/s///' > boot.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/boot.h crc=03203 1158 Sat Apr 21 22:19:57 1990
X--- boot.h crc=36298 1212 Tue Jun 4 23:15:05 1991
X***************
X*** 1,5 ****
X--- 1,8 ----
X /* boot.h */
X
X+ #ifndef _BOOT_H
X+ #define _BOOT_H
X+
X /* Redefine root and root image devices as variables.
X * This keeps the diffs small but may cause future confusion.
X */
X***************
X*** 41,43 ****
X--- 44,47 ----
X };
X
X extern struct bparam_s boot_parameters;
X+ #endif /* _BOOT_H */
/
echo x - callnr.h.cdif
sed '/^X/s///' > callnr.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/callnr.h crc=25018 1453 Sat Apr 21 22:19:57 1990
X--- callnr.h crc=15283 1475 Tue Jun 4 23:15:05 1991
X***************
X*** 10,15 ****
X--- 10,16 ----
X #define CREAT 8
X #define LINK 9
X #define UNLINK 10
X+ #define WAITPID 11
X #define CHDIR 12
X #define TIME 13
X #define MKNOD 14
/
echo x - com.h.cdif
sed '/^X/s///' > com.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/com.h crc=63206 7886 Sat Apr 21 22:19:57 1990
X--- com.h crc=08917 7652 Tue Jun 4 23:15:05 1991
X***************
X*** 7,67 ****
X /* Task numbers, function codes and reply codes. */
X
X #define TTY -NR_TASKS /* terminal I/O class */
X! # define TTY_READ 3 /* fcn code for reading from tty */
X! # define TTY_WRITE 4 /* fcn code for writing to tty */
X! # define TTY_IOCTL 5 /* fcn code for ioctl */
X! # define TTY_SETPGRP 6 /* fcn code for setpgrp */
X! # define TTY_OPEN 7 /* fcn code for opening tty */
X! # define TTY_CLOSE 8 /* fcn code for closing tty */
X # define SUSPEND -998 /* used in interrupts when tty has no data */
X
X! #ifdef AM_KERNEL
X! #define AMOEBA
X! #endif
X
X! #ifdef AMOEBA
X
X! /* There are AM_NTASK copies of the amoeba kernel task.
X! * If you change AM_NTASKS be sure to adjust kernel/table.c and fs/table.c
X! */
X! #define AM_NTASKS 4 /* number of kernel tasks of this class */
X
X! #define AMINT_CLASS (TTY+1) /* Amoeba event handler */
X! #define AMOEBA_CLASS (AMINT_CLASS+AM_NTASKS) /* transaction handlers */
X! # define ETHER_ARRIV 1 /* fcn code for packet arrival */
X! # define AM_TRANS 2 /* amoeba transaction */
X! # define AM_GETREQ 3 /* amoeba getrequest */
X! # define AM_PUTREP 4 /* amoeba putrep */
X! # define AM_REVIVE 6 /* used by kernel task to revive luser task */
X! # define AM_TIMEOUT 8 /* used to talk to clock task */
X! # define AM_PUTSIG 9 /* when the luser hits the DEL ! */
X! # define AM_TASK_DIED 10 /* sent if task died during a transaction */
X
X! #else /* if AMOEBA not defined */
X
X! #define AMOEBA_CLASS TTY
X
X! #endif /* AMOEBA */
X
X! /*
X! * New class definitions should go here and should be defined relative
X! * to AMOEBA_CLASS (ie. as AMOEBA_CLASS+n, for the nth task added).
X! */
X
X! #define IDLE (AMOEBA_CLASS+1) /* task to run when there's nothing to run */
X
X! #define PRINTER -7 /* printer I/O class */
X! /* The printer uses the same commands as TTY. */
X
X #define WINCHESTER -6 /* winchester (hard) disk class */
X #define FLOPPY -5 /* floppy disk class */
X- # define DISK_READ 3 /* fcn code to DISK (must equal TTY_READ) */
X- # define DISK_WRITE 4 /* fcn code to DISK (must equal TTY_WRITE) */
X- # define DISK_IOCTL 5 /* fcn code for setting up RAM disk */
X- # define SCATTERED_IO 6 /* fcn code for multiple reads/writes */
X- # define OPTIONAL_IO 16 /* modifier to DISK_* codes within vector */
X
X #define MEM -4 /* /dev/ram, /dev/(k)mem and /dev/null class */
X # define RAM_DEV 0 /* minor device for /dev/ram */
X # define MEM_DEV 1 /* minor device for /dev/mem */
X # define KMEM_DEV 2 /* minor device for /dev/kmem */
X--- 7,82 ----
X /* Task numbers, function codes and reply codes. */
X
X #define TTY -NR_TASKS /* terminal I/O class */
X! # define CANCEL 0 /* general req to force a task to cancel */
X! # define HARD_INT 2 /* fcn code for all hardware interrupts */
X! # define DEV_READ 3 /* fcn code for reading from tty */
X! # define DEV_WRITE 4 /* fcn code for writing to tty */
X! # define DEV_IOCTL 5 /* fcn code for ioctl */
X! # define DEV_OPEN 6 /* fcn code for opening tty */
X! # define DEV_CLOSE 7 /* fcn code for closing tty */
X! # define SCATTERED_IO 8 /* fcn code for multiple reads/writes */
X! # define OPTIONAL_IO 16 /* modifier to DEV_* codes within vector */
X! # define NO_CTL_TTY -1 /* returned by DEV_OPEN if no ctl tty exists */
X # define SUSPEND -998 /* used in interrupts when tty has no data */
X
X! #if INET_KERNEL
X! #define DL_ETH -10
X! #endif /* INET_TASK */
X
X! /* message type for datalink layer reqests */
X
X! # define DL_WRITE 3
X! # define DL_WRITEV 4
X! # define DL_READ 5
X! # define DL_READV 6
X! # define DL_INIT 7
X! # define DL_STOP 8
X! # define DL_GETSTAT 9
X
X! /* message type for datalink layer replys */
X! # define DL_INIT_REPLY 20
X! # define DL_TASK_REPLY 21
X! # define DL_INT_TASK 22
X
X! # define DL_PORT m2_i1
X! # define DL_PROC m2_i2
X! # define DL_COUNT m2_i3
X! # define DL_MODE m2_l1
X! # define DL_CLCK m2_l2
X! # define DL_ADDR m2_p1
X
X! # define DL_STAT m2_l1
X
X! /* bits in `DL_STAT' field of DL replys */
X! # define DL_PACK_SEND 0x01
X! # define DL_PACK_RECV 0x02
X! # define DL_DISABLED 0x10
X
X! /* bits in `DL_MODE' field of DL requests */
X! # define DL_NOMODE 0x0
X! # define DL_WRITEINT_REQ 0x1
X! # define DL_PROMISC_REQ 0x2
X! # define DL_MULTI_REQ 0x4
X! # define DL_BROAD_REQ 0x8
X
X! # define NW_OPEN DEV_OPEN
X! # define NW_CLOSE DEV_CLOSE
X! # define NW_READ DEV_READ
X! # define NW_WRITE DEV_WRITE
X! # define NW_IOCTL DEV_IOCTL
X! # define NW_CANCEL CANCEL
X
X! #define SYN_ALRM_TASK -9 /* task to send CLOCK_INT messages */
X
X+ #define IDLE -8 /* task to run when there's nothing to run */
X+
X+ /* The printer and disks use the same commands as TTY. */
X+ #define PRINTER -7 /* printer I/O class */
X #define WINCHESTER -6 /* winchester (hard) disk class */
X #define FLOPPY -5 /* floppy disk class */
X
X #define MEM -4 /* /dev/ram, /dev/(k)mem and /dev/null class */
X+ # define NULL_MAJOR 1 /* major device for /dev/null */
X # define RAM_DEV 0 /* minor device for /dev/ram */
X # define MEM_DEV 1 /* minor device for /dev/mem */
X # define KMEM_DEV 2 /* minor device for /dev/kmem */
X***************
X*** 74,80 ****
X--- 89,102 ----
X # define SET_ALARM 1 /* fcn code to CLOCK, set up alarm */
X # define GET_TIME 3 /* fcn code to CLOCK, get real time */
X # define SET_TIME 4 /* fcn code to CLOCK, set real time */
X+ # define GET_UPTIME 5 /* fcn code to CLOCK, get uptime */
X+ # define SET_SYNC_AL 6 /* fcn code to CLOCK, set up alarm which */
X+ /* times out with a send */
X # define REAL_TIME 1 /* reply from CLOCK: here is real time */
X+ # define CLOCK_INT HARD_INT
X+ /* this code will only be sent by */
X+ /* SYN_ALRM_TASK to a task that requested a */
X+ /* synchronous alarm */
X
X #define SYSTASK -2 /* internal functions */
X # define SYS_XIT 1 /* fcn code for sys_xit(parent, proc) */
X***************
X*** 92,97 ****
X--- 114,121 ----
X # define SYS_UMAP 13 /* fcn code for sys_umap(procno, etc) */
X # define SYS_MEM 14 /* fcn code for sys_mem() */
X # define SYS_TRACE 15 /* fcn code for sys_trace(req,pid,addr,data) */
X+ # define SYS_VCOPY 16 /* fnc code for sys_vcopy(src_proc, dest_proc,
X+ vcopy_s, vcopy_ptr) */
X
X #define HARDWARE -1 /* used as source on interrupt generated msgs*/
X
X***************
X*** 110,120 ****
X #define ADDRESS m2_p1 /* core buffer address */
X
X /* Names of message fields for messages to TTY task. */
X! #define TTY_LINE m2_i1 /* message parameter: terminal line */
X! #define TTY_REQUEST m2_i3 /* message parameter: ioctl request code */
X! #define TTY_SPEK m2_l1 /* message parameter: ioctl speed, erasing */
X #define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */
X- #define TTY_PGRP m2_i3 /* message parameter: process group */
X
X /* Names of messages fields used in reply messages from tasks. */
X #define REP_PROC_NR m2_i1 /* # of proc on whose behalf I/O was done */
X--- 134,143 ----
X #define ADDRESS m2_p1 /* core buffer address */
X
X /* Names of message fields for messages to TTY task. */
X! #define TTY_LINE DEVICE /* message parameter: terminal line */
X! #define TTY_REQUEST COUNT /* message parameter: ioctl request code */
X! #define TTY_SPEK POSITION /* message parameter: ioctl speed, erasing */
X #define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */
X
X /* Names of messages fields used in reply messages from tasks. */
X #define REP_PROC_NR m2_i1 /* # of proc on whose behalf I/O was done */
X***************
X*** 134,139 ****
X--- 157,163 ----
X #define SYSTEM_TIME m4_l2 /* system time consumed by process */
X #define CHILD_UTIME m4_l3 /* user time consumed by process' children */
X #define CHILD_STIME m4_l4 /* sys time consumed by process' children */
X+ #define BOOT_TICKS m4_l5 /* number of clock ticks since boot time */
X
X #define PROC1 m1_i1 /* indicates a process */
X #define PROC2 m1_i2 /* indicates a process */
X***************
X*** 143,166 ****
X #define SIGNUM m6_i2 /* signal number for sys_sig */
X #define FUNC m6_f1 /* function pointer for sys_sig */
X #define MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
X! #define CANCEL 0 /* general request to force a task to cancel */
X! #define SIG_MAP m1_i2 /* used by kernel for passing signal bit map */
X!
X! #ifdef AMOEBA
X!
X! /* Names of message fields for amoeba tasks */
X! #define AM_OP m2_i1 /* one of the above operators */
X! #define AM_PROC_NR m2_i2 /* process # of proc doing operation */
X! #define AM_COUNT m2_i3 /* size of buffer for operation */
X! #define AM_ADDRESS m2_p1 /* address of buffer for operation */
X!
X! /* For communication between MM and AMOEBA_CLASS kernel tasks */
X! #define AM_STATUS m2_i3 /* same use as REP_STATUS but for amoeba */
X! #define AM_FREE_IT m2_l1 /* 1=not a getreq, 0=is a getreq */
X!
X! /* Special for passing a physical address from the ethernet driver */
X! #define AM_PADDR m2_l1 /* to the transaction layer */
X!
X! #endif /* AMOEBA */
X!
X! #define HARD_INT 2 /* fcn code for all hardware interrupts */
X--- 167,172 ----
X #define SIGNUM m6_i2 /* signal number for sys_sig */
X #define FUNC m6_f1 /* function pointer for sys_sig */
X #define MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
X! #define NAME_PTR m1_p2 /* tells where program name is for dmp */
X! #define SIG_PROC m2_i1 /* process number for inform */
X! #define SIG_MAP m2_l1 /* used by kernel for passing signal bit map */
/
echo x - config.h.cdif
sed '/^X/s///' > config.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/config.h crc=19667 4317 Sat Apr 21 22:19:57 1990
X--- config.h crc=36139 6514 Tue Jun 4 23:15:06 1991
X***************
X*** 7,17 ****
X /*===========================================================================*
X * This section contains user-settable parameters *
X *===========================================================================*/
X-
X- /* MACHINE must be set to one of the machine types list below. */
X #define MACHINE IBM_PC /* Must be one of the names listed below */
X #define IBM_PC 1 /* any 8088 or 80x86-based system */
X! #define SUN_4 40 /* any SUN SPARC-based system */
X #define ATARI 60 /* ATARI ST (68000) */
X #define AMIGA 61 /* Commodore Amiga (68000) */
X #define MACINTOSH 62 /* Apple Macintosh (68000) */
X--- 7,18 ----
X /*===========================================================================*
X * This section contains user-settable parameters *
X *===========================================================================*/
X #define MACHINE IBM_PC /* Must be one of the names listed below */
X+
X #define IBM_PC 1 /* any 8088 or 80x86-based system */
X! #define IBM_386_VM 2 /* any 386 (486) with virtual memory enabled */
X! #define SUN_4 40 /* any Sun SPARC-based system */
X! #define SUN_4_60 40 /* Sun-4/60 (aka SparcStation 1 or Campus) */
X #define ATARI 60 /* ATARI ST (68000) */
X #define AMIGA 61 /* Commodore Amiga (68000) */
X #define MACINTOSH 62 /* Apple Macintosh (68000) */
X***************
X*** 24,51 ****
X */
X #define ROBUST 0 /* 0 for speed, 1 for robustness */
X
X- /* If HAVE_SCATTERED_IO is set to 1, scattered I/O is enabled. */
X- /* DEBUG - 1.4b will always use this. */
X- #define HAVE_SCATTERED_IO 1
X
X-
X /* The buffer cache should be made as large as you can afford. */
X #if INTEL_32BITS
X #define NR_BUFS 320 /* # blocks in the buffer cache */
X #define NR_BUF_HASH 512 /* size of buf hash table; MUST BE POWER OF 2*/
X! #else
X #define NR_BUFS 30 /* # blocks in the buffer cache */
X #define NR_BUF_HASH 32 /* size of buf hash table; MUST BE POWER OF 2*/
X #endif
X
X
X /* Defines for kernel configuration. */
X #define AUTO_BIOS 0 /* xt_wini.c - use Western's autoconfig BIOS */
X #define C_RS232_INT_HANDLERS 0 /* rs232.c - use slower C int handlers */
X #define DEFAULT_CLASS 0 /* floppy.c - 3 or 5 to get only that size */
X #define LINEWRAP 0 /* console.c - wrap lines at column 80 */
X #define NO_HANDSHAKE 1 /* rs232.c - don't use CTS/RTS handshaking */
X
X /* These configuration defines control debugging and unfinished code. */
X #define FLOPPY_TIMING 0 /* floppy.c - for fine tuning floppy driver */
X #define MONITOR 0 /* xt_wini.c - monitor loop in w_wait_int */
X--- 25,67 ----
X */
X #define ROBUST 0 /* 0 for speed, 1 for robustness */
X
X
X /* The buffer cache should be made as large as you can afford. */
X #if INTEL_32BITS
X #define NR_BUFS 320 /* # blocks in the buffer cache */
X #define NR_BUF_HASH 512 /* size of buf hash table; MUST BE POWER OF 2*/
X! #endif
X! #if MACHINE == SUN_4_60
X! #define NR_BUFS 512 /* # blocks in the buffer cache (<=1536) */
X! #define NR_BUF_HASH 512 /* size of buf hash table; MUST BE POWER OF 2*/
X! #endif
X! #ifndef NR_BUFS
X #define NR_BUFS 30 /* # blocks in the buffer cache */
X #define NR_BUF_HASH 32 /* size of buf hash table; MUST BE POWER OF 2*/
X #endif
X
X
X+ /* The number of map slots determines how big a disk partition can be.
X+ * Each I_MAP_SLOT allows 8K files; each Z_MAP_SLOT allows 8M of data.
X+ */
X+ #define I_MAP_SLOTS 8 /* max # of blocks in the inode bit map */
X+ #define Z_MAP_SLOTS 16 /* max # of blocks in the zone bit map */
X+
X+
X /* Defines for kernel configuration. */
X #define AUTO_BIOS 0 /* xt_wini.c - use Western's autoconfig BIOS */
X #define C_RS232_INT_HANDLERS 0 /* rs232.c - use slower C int handlers */
X #define DEFAULT_CLASS 0 /* floppy.c - 3 or 5 to get only that size */
X #define LINEWRAP 0 /* console.c - wrap lines at column 80 */
X #define NO_HANDSHAKE 1 /* rs232.c - don't use CTS/RTS handshaking */
X+ #define ENABLE_NETWORKING 0 /* enable TCP/IP code */
X+ #define ALLOW_USER_SEND 0 /* debug option; allow user processes to send
X+ * to and receive from everyone */
X
X+
X+ /* Determine which device to use for pipes. */
X+ #define PIPE_DEV ROOT_DEV /* put pipes on root device */
X+
X /* These configuration defines control debugging and unfinished code. */
X #define FLOPPY_TIMING 0 /* floppy.c - for fine tuning floppy driver */
X #define MONITOR 0 /* xt_wini.c - monitor loop in w_wait_int */
X***************
X*** 55,61 ****
X--- 71,108 ----
X #define SPARE_VIDEO_MEMORY 0 /* misc.c - use memory from any 2nd vid card */
X #define SPLIMITS 0 /* mpx*.x - set stack limits (never checked) */
X
X+ #if (MACHINE == ATARI)
X+ /* This define says whether the keyboard generates VT100 or IBM_PC escapes. */
X+ #define KEYBOARD VT100 /* either VT100 or IBM_PC */
X+ #define VT100 100
X
X+ /* The next define determines the kind of partitioning. */
X+ #define PARTITIONING SUPRA /* one of the following or ATARI */
X+ #define SUPRA 1 /*ICD, SUPRA and BMS are all the same */
X+ #define BMS 1
X+ #define ICD 1
X+ #define CBHD 2
X+ #define EICKMANN 3
X+
X+ /* Define the number of hard disk drives on your system. */
X+ #define NR_HD_DRIVES 1 /* typically 0 or 1 */
X+
X+ /* Note: if you want to make your kernel smaller, you can set NR_FD_DRIVES
X+ to 0. You will still be able to boot minix.img from floppy. However, you
X+ MUST fetch both the root and usr filesystem from a hard disk
X+ */
X+ /* Define the number of floppy disk drives on your system. */
X+ #define NR_FD_DRIVES 1 /* 0, 1, 2 */
X+
X+ /* This configuration define controls parallel printer code. */
X+ #define PAR_PRINTER 1 /* disable (0) / enable (1) parallel printer */
X+
X+ /* This configuration define controls disk controller clock code. */
X+ #define HD_CLOCK 1 /* disable (0) / enable (1) hard disk clock */
X+
X+ #endif
X+
X+
X /*===========================================================================*
X * There are no user-settable parameters after this line *
X *===========================================================================*/
X***************
X*** 67,104 ****
X #define M68000 2 /* CHIP type for Atari, Amiga, Macintosh */
X #define SPARC 3 /* CHIP type for SUN-4 (e.g. SPARCstation) */
X
X #if MACHINE == IBM_PC
X! #define CHIP INTEL
X #endif
X
X! #if (MACHINE == ATARI) | (MACHINE == AMIGA) | (MACHINE == MACINTOSH)
X! #define CHIP M68000
X #endif
X
X! #if (MACHINE == SUN_4)
X! #define CHIP SPARC
X #endif
X
X! #if MACHINE == ATARI
X! #define ASKDEV 1 /* ask for boot device */
X! #define FASTLOAD 1 /* use multiple block transfers to init ram */
X #endif
X
X /* The file buf.h uses MAYBE_WRITE_IMMED. */
X #if ROBUST
X #define MAYBE_WRITE_IMMED WRITE_IMMED /* slower but perhaps safer */
X #else
X! #define MAYBE_WRITE_IMMED 0 /* faster */
X #endif
X
X #ifndef MACHINE
X! #error "In <minix/config.h> please define MACHINE"
X #endif
X
X #ifndef CHIP
X! #error "In <minix/config.h> please define MACHINE to have a legal value"
X #endif
X
X #if (MACHINE == 0)
X! #error "MACHINE has incorrect value (0)"
X #endif
X--- 114,160 ----
X #define M68000 2 /* CHIP type for Atari, Amiga, Macintosh */
X #define SPARC 3 /* CHIP type for SUN-4 (e.g. SPARCstation) */
X
X+ /* Set the FP_FORMAT type based on the machine selected, either hw or sw */
X+ #define FP_NONE 0 /* no floating point support */
X+ #define FP_IEEE 1 /* conform IEEE floating point standard */
X+
X #if MACHINE == IBM_PC
X! #define CHIP INTEL
X #endif
X
X! #if (MACHINE == ATARI) || (MACHINE == AMIGA) || (MACHINE == MACINTOSH)
X! #define CHIP M68000
X #endif
X
X! #if (MACHINE == SUN_4) || (MACHINE == SUN_4_60)
X! #define CHIP SPARC
X! #define FP_FORMAT FP_IEEE
X #endif
X
X! #if (MACHINE == ATARI) || (MACHINE == SUN_4)
X! #define ASKDEV 1 /* ask for boot device */
X! #define FASTLOAD 1 /* use multiple block transfers to init ram */
X #endif
X
X+ #ifndef FP_FORMAT
X+ #define FP_FORMAT FP_NONE
X+ #endif
X+
X /* The file buf.h uses MAYBE_WRITE_IMMED. */
X #if ROBUST
X #define MAYBE_WRITE_IMMED WRITE_IMMED /* slower but perhaps safer */
X #else
X! #define MAYBE_WRITE_IMMED 0 /* faster */
X #endif
X
X #ifndef MACHINE
X! error "In <minix/config.h> please define MACHINE"
X #endif
X
X #ifndef CHIP
X! error "In <minix/config.h> please define MACHINE to have a legal value"
X #endif
X
X #if (MACHINE == 0)
X! error "MACHINE has incorrect value (0)"
X #endif
/
echo x - const.h.cdif
sed '/^X/s///' > const.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/const.h crc=55802 3932 Sat Apr 21 22:19:57 1990
X--- const.h crc=03094 5546 Tue Jun 4 23:15:06 1991
X***************
X*** 19,28 ****
X #define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */
X #define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */
X
X! #ifdef AM_KERNEL
X! #define NR_TASKS 14 /* must be 5 more than without amoeba */
X! #else
X! #define NR_TASKS 9 /* number of tasks in the transfer vector */
X #endif
X
X #define NR_PROCS 32 /* number of slots in proc table */
X--- 19,36 ----
X #define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */
X #define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */
X
X! #define NULL ((void *)0) /* null pointer */
X! #define CPVEC_NR 16 /* max # of entries in a SYS_VCOPY request */
X! #if (MACHINE == SUN_4)
X! #define LOAD_ADDR 0x4000 /* addr at which the file is loaded (SPARC) */
X! /* DEBUG. What file? Is this the same as
X! * KERNEL_LOAD_ADDRESS for the 8088/386?
X! * It is 0x600 for the 8088 and for old 386
X! * versions, 0x700 for the current 386 version,
X! * and may have to be page-aligned for later
X! * 386 versions. It surely belongs in the
X! * machine-dependent section.
X! */
X #endif
X
X #define NR_PROCS 32 /* number of slots in proc table */
X***************
X*** 31,44 ****
X #define D 1 /* proc[i].mem_map[D] is for data */
X #define S 2 /* proc[i].mem_map[S] is for stack */
X
X! #define MAX_P_LONG 2147483647 /* maximum positive long, i.e. 2**31 - 1 */
X
X /* Memory is allocated in clicks. */
X #if (CHIP == INTEL) || (CHIP == M68000)
X #define CLICK_SIZE 256 /* unit in which memory is allocated */
X #define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */
X #endif
X
X #define click_to_round_k(n) \
X ((unsigned) ((((unsigned long) (n) << CLICK_SHIFT) + 512) / 1024))
X #if CLICK_SIZE < 1024
X--- 39,83 ----
X #define D 1 /* proc[i].mem_map[D] is for data */
X #define S 2 /* proc[i].mem_map[S] is for stack */
X
X! /* Process numbers of some important processes. */
X! #define MM_PROC_NR 0 /* process number of memory manager */
X! #define FS_PROC_NR 1 /* process number of file system */
X
X+ /* Miscellaneous */
X+ #define BYTE 0377 /* mask for 8 bits */
X+ #define TO_USER 0 /* flag telling to copy from fs to user */
X+ #define FROM_USER 1 /* flag telling to copy from user to fs */
X+ #define READING 0 /* copy data to user */
X+ #define WRITING 1 /* copy data from user */
X+ #define NO_NUM 0x8000 /* used as numerical argument to panic() */
X+ #define NIL_PTR (char *) 0 /* generally useful expression */
X+ #define HAVE_SCATTERED_IO 1 /* scattered I/O is now standard */
X+ #define SIG_PUSH_BYTES (4*sizeof(int)) /* how many bytes pushed by signal */
X+
X+ /* Macros. */
X+ #define MAX(a, b) ((a) > (b) ? (a) : (b))
X+ #define MIN(a, b) ((a) < (b) ? (a) : (b))
X+
X+ /* Machine dependent stuff. */
X+ #if INET_KERNEL
X+ #define INET_TASKS 1 /* Ethernet task */
X+ #else
X+ #define INET_TASKS 0
X+ #endif
X+
X+ #define NR_TASKS (10 + INET_TASKS) /* number of tasks */
X+
X /* Memory is allocated in clicks. */
X #if (CHIP == INTEL) || (CHIP == M68000)
X #define CLICK_SIZE 256 /* unit in which memory is allocated */
X #define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */
X #endif
X
X+ #if (CHIP == SPARC)
X+ #define CLICK_SIZE 4096 /* unit in which memory is alocated */
X+ #define CLICK_SHIFT 12 /* 2log of CLICK_SIZE */
X+ #endif
X+
X #define click_to_round_k(n) \
X ((unsigned) ((((unsigned long) (n) << CLICK_SHIFT) + 512) / 1024))
X #if CLICK_SIZE < 1024
X***************
X*** 47,76 ****
X #define k_to_click(n) ((n) / (CLICK_SIZE / 1024))
X #endif
X
X! /* Process numbers of some important processes */
X! #define MM_PROC_NR 0 /* process number of memory manager */
X! #define FS_PROC_NR 1 /* process number of file system */
X #define INIT_PROC_NR 2 /* init -- the process that goes multiuser */
X #define LOW_USER 2 /* first user not part of operating system */
X
X- /* Miscellaneous */
X- #define BYTE 0377 /* mask for 8 bits */
X- #define TO_USER 0 /* flag telling to copy from fs to user */
X- #define FROM_USER 1 /* flag telling to copy from user to fs */
X- #define READING 0 /* copy data to user */
X- #define WRITING 1 /* copy data from user */
X-
X #if (MACHINE != ATARI)
X #define ABS -999 /* this process means absolute memory */
X #endif
X
X- #define WORD_SIZE 2 /* number of bytes per word */
X-
X- #define NIL_PTR (char *) 0 /* generally useful expression */
X-
X- #define NO_NUM 0x8000 /* used as numerical argument to panic() */
X- #define SIG_PUSH_BYTES (4*sizeof(int)) /* how many bytes pushed by signal */
X-
X /* Flag bits for i_mode in the inode. */
X #define I_TYPE 0170000 /* this field gives inode type */
X #define I_REGULAR 0100000 /* regular file, not dir or special */
X--- 86,104 ----
X #define k_to_click(n) ((n) / (CLICK_SIZE / 1024))
X #endif
X
X! #if INET_KERNEL
X! #define INET_PROC_NR 2 /* process number of network task */
X! #define INIT_PROC_NR 3 /* init -- the process that goes multiuser */
X! #define LOW_USER 3 /* first user not part of operating system */
X! #else
X #define INIT_PROC_NR 2 /* init -- the process that goes multiuser */
X #define LOW_USER 2 /* first user not part of operating system */
X+ #endif
X
X #if (MACHINE != ATARI)
X #define ABS -999 /* this process means absolute memory */
X #endif
X
X /* Flag bits for i_mode in the inode. */
X #define I_TYPE 0170000 /* this field gives inode type */
X #define I_REGULAR 0100000 /* regular file, not dir or special */
X***************
X*** 86,88 ****
X--- 114,127 ----
X #define W_BIT 0000002 /* rWx protection bit */
X #define X_BIT 0000001 /* rwX protection bit */
X #define I_NOT_ALLOC 0000000 /* this inode is free */
X+
X+ /* Some limits. */
X+ #define MAX_BLOCK_NR ((block_t) 077777777) /* largest block number */
X+ #define HIGHEST_ZONE ((zone_t) 077777777) /* largest zone number */
X+ #define MAX_INODE_NR ((ino_t) 0177777) /* largest inode number */
X+ #define MAX_FILE_POS ((off_t) 017777777777) /* largest legal file offset */
X+
X+ #define NO_BLOCK ((block_t) 0) /* absence of a block number */
X+ #define NO_ENTRY ((ino_t) 0) /* absence of a dir entry */
X+ #define NO_ZONE ((zone_t) 0) /* absence of a zone number */
X+ #define NO_DEV ((dev_t) 0) /* absence of a device numb */
/
echo x - diskparm.h.cdif
sed '/^X/s///' > diskparm.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/diskparm.h crc=16388 393 Sat Apr 21 22:19:57 1990
X--- diskparm.h crc=28321 458 Tue Jun 4 23:15:06 1991
X***************
X*** 2,7 ****
X--- 2,9 ----
X * used mainly for formatting.
X */
X
X+ #ifndef _DISKPARM_H
X+ #define _DISKPARM_H
X struct disk_parameter_s {
X char spec1;
X char spec2;
X***************
X*** 15,17 ****
X--- 17,20 ----
X char head_settle_msec;
X char motor_start_eigth_sec;
X };
X+ #endif /* _DISKPARM_H */
/
echo x - dl_eth.h
sed '/^X/s///' > dl_eth.h << '/'
X/* The eth_stat struct is used in a DL_GETSTAT request the the ehw_task. */
X
X#ifndef _ETH_HW_H
X#define _ETH_HW_H
X
Xtypedef struct eth_stat
X{
X unsigned long ets_recvErr, /* # receive errors */
X ets_sendErr, /* # send error */
X ets_OVW, /* # buffer overwrite warnings */
X ets_CRCerr, /* # crc errors of read */
X ets_frameAll, /* # frames not alligned (# bits % 8 != 0) */
X ets_missedP, /* # packets missed due to slow processing */
X ets_packetR, /* # packets received */
X ets_packetT, /* # packets transmitted */
X ets_transDef, /* # transmission defered (Tx was busy) */
X ets_collision, /* # collissions */
X ets_transAb, /* # Tx aborted due to excess collisions */
X ets_carrSense, /* # carrier sense lost */
X ets_fifoUnder, /* # FIFO underruns (processor too busy) */
X ets_fifoOver, /* # FIFO overruns (processor too busy) */
X ets_CDheartbeat, /* # times unable to transmit collision sig*/
X ets_OWC; /* # times out of window collision */
X} eth_stat_t;
X
X#endif /* _ETH_HW_H */
/
echo x - fslib.h
sed '/^X/s///' > fslib.h << '/'
X_PROTOTYPE( int bitmapsize, (bit_t nr_bits) );
X_PROTOTYPE( unsigned conv2, (int norm, int w) );
X_PROTOTYPE( long conv4, (int norm, long x) );
X_PROTOTYPE( void conv_inode, (struct inode *rip, d1_inode *dip,
X d2_inode *dip2, int rw_flag, int magic) );
X_PROTOTYPE( void old_icopy, (struct inode *rip, d1_inode *dip,
X int direction, int norm));
X_PROTOTYPE( void new_icopy, (struct inode *rip, d2_inode *dip,
X int direction, int norm));
/
echo x - minlib.h
sed '/^X/s///' > minlib.h << '/'
X#ifndef _MINLIB
X#define _MINLIB
X
X#ifndef _ANSI_H
X#include <ansi.h>
X#endif
X
X/* Miscellaneous BSD. */
X_PROTOTYPE(void swab, (char *from, char *to, int count));
X_PROTOTYPE(char *crypt, (char *pw, char *salt));
X_PROTOTYPE(char *itoa, (int n));
X_PROTOTYPE(char *getpass, (const char *prompt));
X
X/* Miscellaneous MINIX. */
X_PROTOTYPE(void std_err, (char *s));
X_PROTOTYPE(void prints, (const char *s, ...));
X_PROTOTYPE(int fsversion, (char *dev, char *prog));
X_PROTOTYPE(int load_mtab, (char *prog_name));
X_PROTOTYPE(int rewrite_mtab, (char *prog_name));
X_PROTOTYPE(int get_mtab_entry, (char *, char *, char *, char *));
X_PROTOTYPE(int put_mtab_entry, (char *, char *, char *, char *));
X
X#endif
/
echo x - partition.h.cdif
sed '/^X/s///' > partition.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/partition.h crc=64597 1059 Sat Apr 21 22:19:57 1990
X--- partition.h crc=49125 1127 Tue Jun 4 23:15:07 1991
X***************
X*** 1,4 ****
X--- 1,6 ----
X /* Description of entry in partition table. */
X+ #ifndef _PARTITION_H
X+ #define _PARTITION_H
X struct part_entry {
X unsigned char bootind; /* boot indicator 0/ACTIVE_FLAG */
X unsigned char start_head; /* head value for first sector */
X***************
X*** 20,22 ****
X--- 22,25 ----
X #define MINIX_PART 0x81
X #define NO_PART 0x00
X #define OLD_MINIX_PART 0x80 /* created before 1.4b, driver must round */
X+ #endif /* _PARTITION_H */
/
echo x - syslib.h
sed '/^X/s///' > syslib.h << '/'
X/* Prototypes for system library functions. */
X
X/* Minix user+system library. */
X#ifndef _SYSLIB_H
X#define _SYSLIB_H
X_PROTOTYPE( void printk, (char *_fmt, ...) );
X_PROTOTYPE( int sendrec, (int _src_dest, message *_m_ptr) );
X
X/* Minix system library. */
X_PROTOTYPE( int receive, (int _src, message *_m_ptr) );
X_PROTOTYPE( int send, (int _dest, message *_m_ptr) );
X
X_PROTOTYPE( void sys_abort, (void) );
X_PROTOTYPE( void sys_copy, (message *mptr) );
X_PROTOTYPE( void sys_exec, (int proc, char *ptr, int traced, char *prog));
X_PROTOTYPE( void sys_getsp, (int proc, vir_bytes *newsp) );
X_PROTOTYPE( void sys_kill, (int proc, int sig) );
X_PROTOTYPE( void sys_newmap, (int proc, struct mem_map *ptr) );
X_PROTOTYPE( void sys_sig, (int proc, int sig, sighandler_t sighandler) );
X_PROTOTYPE( void sys_times, (int proc, clock_t ptr[5]) );
X_PROTOTYPE( int sys_trace,(int req, int procnr, long addr, long *data_p));
X_PROTOTYPE( void tell_fs, (int what, int p1, int p2, int p3) );
X_PROTOTYPE( void sys_xit, (int parent, int proc, phys_clicks *basep,
X phys_clicks *sizep));
X_PROTOTYPE( void sys_fork, (int parent, int child,int pid,phys_clicks shadow));
X_PROTOTYPE( void sys_fresh, (int proc, struct mem_map *ptr, phys_clicks dc,
X phys_clicks *basep, phys_clicks *sizep) );
X
X#endif /* _SYSLIB_H */
/
echo x - type.h.cdif
sed '/^X/s///' > type.h.cdif << '/'
X*** /home/top/ast/minix/1.5/include/minix/type.h crc=38283 3826 Sat Apr 21 22:19:57 1990
X--- type.h crc=26594 3490 Tue Jun 4 23:15:07 1991
X***************
X*** 1,40 ****
X! /* Macros */
X! #define MAX(a,b) (a > b ? a : b)
X! #define MIN(a,b) (a < b ? a : b)
X
X! /* Type definitions */
X! typedef unsigned short unshort; /* must be 16-bit unsigned */
X! typedef unshort block_nr; /* block number */
X! #define NO_BLOCK (block_nr) 0 /* indicates the absence of a block number */
X! #define MAX_BLOCK_NR (block_nr) 0177777
X
X! #define NO_ENTRY (ino_t) 0 /* indicates the absence of a dir entry */
X! #define MAX_INODE_NR (ino_t) 0177777
X
X! typedef unshort zone_nr; /* zone number */
X! #define NO_ZONE (zone_nr) 0 /* indicates the absence of a zone number */
X! #define HIGHEST_ZONE (zone_nr) 0177777
X
X- typedef unshort bit_nr; /* if ino_t & zone_nr both unshort,
X- then also unshort, else long */
X-
X- typedef long zone_type; /* zone size */
X- #define NO_DEV (dev_t) ~0 /* indicates absence of a device number */
X-
X- #define MAX_FILE_POS 017777777777L
X-
X #if (CHIP == INTEL)
X! typedef unsigned vir_bytes; /* virtual addresses and lengths in bytes */
X #endif
X
X #if (CHIP == M68000)
X! typedef long vir_bytes; /* virtual addresses and lengths in bytes */
X #endif
X
X! typedef unsigned vir_clicks; /* virtual addresses and lengths in clicks */
X! typedef long phys_bytes; /* physical addresses and lengths in bytes */
X! typedef unsigned phys_clicks; /* physical addresses and lengths in clicks */
X! typedef int signed_clicks; /* same length as phys_clicks, but signed */
X
X /* Types relating to messages. */
X #define M1 1
X--- 1,31 ----
X! #ifndef _TYPE_H
X! #define _TYPE_H
X! #ifndef _MINIX_TYPE_H
X! #define _MINIX_TYPE_H
X
X! /* Type of a signal-handling function. */
X! #ifndef _ANSI_H
X! #include <ansi.h>
X! #endif
X
X! typedef _PROTOTYPE (void (*sighandler_t), (int));
X
X! /* Type definitions. */
X! typedef unsigned int vir_clicks; /* virtual addresses and lengths in clicks */
X! typedef unsigned long phys_bytes;/* physical addresses and lengths in bytes */
X! typedef unsigned int phys_clicks;/* physical addresses and lengths in clicks */
X
X #if (CHIP == INTEL)
X! typedef unsigned int vir_bytes; /* virtual addresses and lengths in bytes */
X #endif
X
X #if (CHIP == M68000)
X! typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
X #endif
X
X! #if (CHIP == SPARC)
X! typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
X! #endif
X
X /* Types relating to messages. */
X #define M1 1
X***************
X*** 45,53 ****
X typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
X typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
X typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
X! typedef struct {long m4l1, m4l2, m4l3, m4l4;} mess_4;
X! typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;} mess_5;
X! typedef struct {int m6i1, m6i2, m6i3; long m6l1; void (*m6f1)();} mess_6;
X
X typedef struct {
X int m_source; /* who sent the message */
X--- 36,44 ----
X typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
X typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
X typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
X! typedef struct {long m4l1, m4l2, m4l3, m4l4, m4l5;} mess_4;
X! typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;}mess_5;
X! typedef struct {int m6i1, m6i2, m6i3; long m6l1; sighandler_t m6f1;} mess_6;
X
X typedef struct {
X int m_source; /* who sent the message */
X***************
X*** 62,70 ****
X } m_u;
X } message;
X
X- #define MESS_SIZE (sizeof(message))
X- #define NIL_MESS (message *) 0
X-
X /* The following defines provide names for useful members. */
X #define m1_i1 m_u.m_m1.m1i1
X #define m1_i2 m_u.m_m1.m1i2
X--- 53,58 ----
X***************
X*** 85,95 ****
X #define m3_p1 m_u.m_m3.m3p1
X #define m3_ca1 m_u.m_m3.m3ca1
X
X-
X #define m4_l1 m_u.m_m4.m4l1
X #define m4_l2 m_u.m_m4.m4l2
X #define m4_l3 m_u.m_m4.m4l3
X #define m4_l4 m_u.m_m4.m4l4
X
X #define m5_c1 m_u.m_m5.m5c1
X #define m5_c2 m_u.m_m5.m5c2
X--- 73,83 ----
X #define m3_p1 m_u.m_m3.m3p1
X #define m3_ca1 m_u.m_m3.m3ca1
X
X #define m4_l1 m_u.m_m4.m4l1
X #define m4_l2 m_u.m_m4.m4l2
X #define m4_l3 m_u.m_m4.m4l3
X #define m4_l4 m_u.m_m4.m4l4
X+ #define m4_l5 m_u.m_m4.m4l5
X
X #define m5_c1 m_u.m_m5.m5c1
X #define m5_c2 m_u.m_m5.m5c2
X***************
X*** 111,129 ****
X vir_clicks mem_len; /* length */
X };
X
X- struct copy_info { /* used by sys_copy(src, dst, bytes) */
X- int cp_src_proc;
X- int cp_src_space;
X- vir_bytes cp_src_vir;
X- int cp_dst_proc;
X- int cp_dst_space;
X- vir_bytes cp_dst_vir;
X- vir_bytes cp_bytes;
X- };
X-
X struct iorequest_s {
X long io_position; /* position in device file (really off_t) */
X char *io_buf; /* buffer in user space */
X unsigned short io_nbytes; /* size of request */
X unsigned short io_request; /* read, write (optionally) */
X };
X--- 99,124 ----
X vir_clicks mem_len; /* length */
X };
X
X struct iorequest_s {
X long io_position; /* position in device file (really off_t) */
X char *io_buf; /* buffer in user space */
X unsigned short io_nbytes; /* size of request */
X unsigned short io_request; /* read, write (optionally) */
X };
X+ #endif /* _TYPE_H */
X+
X+ typedef struct {
X+ vir_bytes iov_addr; /* address of an I/O buffer */
X+ vir_bytes iov_size; /* sizeof an I/O buffer */
X+ } iovec_t;
X+
X+ typedef struct {
X+ vir_bytes cpv_src; /* src address of data */
X+ vir_bytes cpv_dst; /* dst address of data */
X+ vir_bytes cpv_size; /* size of data */
X+ } cpvec_t;
X+
X+ #define MESS_SIZE (sizeof(message)) /* might need usizeof from fs here */
X+ #define NIL_MESS ((message *) 0)
X+
X+ #endif /* _MINIX_TYPE_H */
/