Updated system call library.
Updated various header files for consistency. Remove some unused stuff ... better check to be done.
This commit is contained in:
parent
654722493b
commit
272a8496ac
9 changed files with 71 additions and 127 deletions
|
@ -8,4 +8,4 @@ clean::
|
||||||
install::
|
install::
|
||||||
-rm -rf $(INC)
|
-rm -rf $(INC)
|
||||||
mkdir -p $(INC)
|
mkdir -p $(INC)
|
||||||
tar cf - `find . -name '*.h'` | (cd $(INC) && tar xf -)
|
tar cf - `find . -name '*.h'` | (cd $(INC) && tar xvf -)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Physical memory layout on IMB compatible PCs. Only the major, fixed memory
|
/* Physical memory layout on IBM compatible PCs. Only the major, fixed memory
|
||||||
* areas are detailed here. Known addresses of the BIOS data area are defined
|
* areas are detailed here. Known addresses of the BIOS data area are defined
|
||||||
* in <ibm/bios.h>. The map upper memory area (UMA) is only roughly defined
|
* in <ibm/bios.h>. The map upper memory area (UMA) is only roughly defined
|
||||||
* since the UMA sections may vary in size and locus.
|
* since the UMA sections may vary in size and locus.
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
/* Kernel tasks. These all run in the same address space. */
|
/* Kernel tasks. These all run in the same address space. */
|
||||||
#define IDLE -4 /* runs when no one else can run */
|
#define IDLE -4 /* runs when no one else can run */
|
||||||
#define CLOCK -3 /* alarms and other clock functions */
|
#define CLOCK -3 /* alarms and other clock functions */
|
||||||
#define SYSTASK -2 /* request system functionality */
|
#define SYSTEM -2 /* request system functionality */
|
||||||
#define KERNEL -1 /* used as source on notify() messages */
|
#define KERNEL -1 /* pseudo-process for IPC and scheduling */
|
||||||
#define HARDWARE KERNEL /* for hardware interrupt handlers */
|
#define HARDWARE KERNEL /* for hardware interrupt handlers */
|
||||||
|
|
||||||
/* Number of tasks. Note that NR_PROCS is defined in <minix/config.h>. */
|
/* Number of tasks. Note that NR_PROCS is defined in <minix/config.h>. */
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
#define INIT_PROC_NR (LOG_PROC_NR + 1) /* init -- goes multiuser */
|
#define INIT_PROC_NR (LOG_PROC_NR + 1) /* init -- goes multiuser */
|
||||||
|
|
||||||
/* Number of processes contained in the system image. */
|
/* Number of processes contained in the system image. */
|
||||||
#define IMAGE_SIZE (NR_TASKS + \
|
#define NR_BOOT_PROCS (NR_TASKS + \
|
||||||
5 + ENABLE_AT_WINI + ENABLE_FLOPPY + \
|
5 + ENABLE_AT_WINI + ENABLE_FLOPPY + \
|
||||||
ENABLE_PRINTER + ENABLE_RTL8139 + ENABLE_FXP + \
|
ENABLE_PRINTER + ENABLE_RTL8139 + ENABLE_FXP + \
|
||||||
ENABLE_DPETH + ENABLE_LOG + 1 )
|
ENABLE_DPETH + ENABLE_LOG + 1 )
|
||||||
|
@ -63,20 +63,25 @@
|
||||||
* blocking notifications are delivered. The lowest numbers go first. The
|
* blocking notifications are delivered. The lowest numbers go first. The
|
||||||
* offset are used for the per-process notification bit maps.
|
* offset are used for the per-process notification bit maps.
|
||||||
*/
|
*/
|
||||||
#define NOTIFICATION 0x0800 /* flag for notifications */
|
#define NOTIFY_FROM(p_nr) (0x1000 | ((p_nr) + NR_TASKS))
|
||||||
# define HARD_INT (NOTIFICATION | 0) /* hardware interrupt */
|
# define SYN_ALARM NOTIFY_FROM(CLOCK) /* synchronous alarm */
|
||||||
# define SYN_ALARM (NOTIFICATION | 1) /* synchronous alarm */
|
# define KSIG_PENDING NOTIFY_FROM(SYSTEM) /* pending signal(s) */
|
||||||
# define KSIG_PENDING (NOTIFICATION | 2) /* signal(s) pending */
|
# define HARD_INT NOTIFY_FROM(HARDWARE) /* hardware interrupt */
|
||||||
# define NEW_KMESS (NOTIFICATION | 3) /* new kernel message */
|
# define NEW_KMESS NOTIFY_FROM(SYSTEM) /* new kernel message */
|
||||||
# define HARD_STOP (NOTIFICATION | 4) /* system shutdown */
|
# define NEW_KSIG NOTIFY_FROM(HARDWARE) /* new kernel signal */
|
||||||
|
# define FKEY_PRESSED NOTIFY_FROM(TTY) /* function key press */
|
||||||
|
|
||||||
|
#define NOTIFICATION 0x800 /* flag for notifications */
|
||||||
|
# define HARD_STOP (NOTIFICATION | 4) /* system shutdown */
|
||||||
# define DEV_SELECTED (NOTIFICATION | 5) /* select() notification */
|
# define DEV_SELECTED (NOTIFICATION | 5) /* select() notification */
|
||||||
#define NR_NOTIFY_TYPES 6 /* nr of bits in mask */
|
#define NR_NOTIFY_TYPES 6 /* nr of bits in mask */
|
||||||
|
|
||||||
/* Shorthands for message parameters passed with notifications. */
|
/* Shorthands for message parameters passed with notifications. */
|
||||||
#define NOTIFY_SOURCE m_source
|
#define NOTIFY_SOURCE m_source
|
||||||
#define NOTIFY_TYPE m_type
|
#define NOTIFY_TYPE m_type
|
||||||
#define NOTIFY_FLAGS m2_i1
|
#define NOTIFY_ARG m2_l1
|
||||||
#define NOTIFY_ARG m2_l1
|
#define NOTIFY_TIMESTAMP m2_l2
|
||||||
|
#define NOTIFY_FLAGS m2_i1
|
||||||
|
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
|
@ -203,12 +208,12 @@
|
||||||
* is made from the call vector.
|
* is made from the call vector.
|
||||||
*/
|
*/
|
||||||
# define SYS_TIMES 0 /* sys_times(proc_nr, bufptr) */
|
# define SYS_TIMES 0 /* sys_times(proc_nr, bufptr) */
|
||||||
# define SYS_XIT 1 /* sys_xit(parent, proc) */
|
# define SYS_EXIT 1 /* sys_exit(parent, proc) */
|
||||||
# define SYS_GETSIG 2 /* sys_getsig(proc_nr, sig_map) */
|
# define SYS_GETKSIG 2 /* sys_getsig(proc_nr, sig_map) */
|
||||||
|
# define SYS_ENDKSIG 3 /* sys_endsig(proc_nr) */
|
||||||
# define SYS_FORK 4 /* sys_fork(parent, child, pid) */
|
# define SYS_FORK 4 /* sys_fork(parent, child, pid) */
|
||||||
# define SYS_NEWMAP 5 /* sys_newmap(proc_nr, map_ptr) */
|
# define SYS_NEWMAP 5 /* sys_newmap(proc_nr, map_ptr) */
|
||||||
# define SYS_ENDSIG 6 /* sys_endsig(proc_nr) */
|
|
||||||
# define SYS_EXEC 7 /* sys_exec(proc_nr, new_sp) */
|
# define SYS_EXEC 7 /* sys_exec(proc_nr, new_sp) */
|
||||||
# define SYS_SIGSEND 8 /* sys_sigsend(proc_nr, ctxt_ptr) */
|
# define SYS_SIGSEND 8 /* sys_sigsend(proc_nr, ctxt_ptr) */
|
||||||
# define SYS_ABORT 9 /* sys_abort() */
|
# define SYS_ABORT 9 /* sys_abort() */
|
||||||
|
@ -217,8 +222,7 @@
|
||||||
|
|
||||||
# define SYS_TRACE 13 /* sys_trace(req,pid,addr,data) */
|
# define SYS_TRACE 13 /* sys_trace(req,pid,addr,data) */
|
||||||
|
|
||||||
# define SYS_SIGNALRM 15 /* sys_signalrm(proc_nr, ticks) */
|
# define SYS_SETALARM 16 /* sys_setalarm(proc_nr,exp_time,abs_time) */
|
||||||
# define SYS_SYNCALRM 16 /* sys_syncalrm(proc_nr,exp_time,abs_time) */
|
|
||||||
|
|
||||||
# define SYS_PHYSVCOPY 18 /* sys_physvcopy(vec_ptr, vec_size) */
|
# define SYS_PHYSVCOPY 18 /* sys_physvcopy(vec_ptr, vec_size) */
|
||||||
# define SYS_SVRCTL 19 /* sys_svrctl(proc_nr, req, argp) */
|
# define SYS_SVRCTL 19 /* sys_svrctl(proc_nr, req, argp) */
|
||||||
|
@ -229,22 +233,25 @@
|
||||||
# define SYS_VDEVIO 24 /* sys_vdevio(buf_ptr, nr_ports) */
|
# define SYS_VDEVIO 24 /* sys_vdevio(buf_ptr, nr_ports) */
|
||||||
# define SYS_IRQCTL 25 /* sys_irqctl() */
|
# define SYS_IRQCTL 25 /* sys_irqctl() */
|
||||||
|
|
||||||
# define SYS_IOPENABLE 27 /* sys_enable_iop() */
|
|
||||||
# define SYS_SEGCTL 28 /* sys_segctl(*idx, *seg, *off, phys, size) */
|
# define SYS_SEGCTL 28 /* sys_segctl(*idx, *seg, *off, phys, size) */
|
||||||
|
|
||||||
# define SYS_VIRCOPY 30 /* sys_vircopy(src,seg,addr,dst,seg,addr,cnt) */
|
# define SYS_VIRCOPY 30 /* sys_vircopy(src,seg,addr,dst,seg,addr,cnt) */
|
||||||
# define SYS_PHYSCOPY 31 /* sys_physcopy(src_addr,dst_addr,count) */
|
# define SYS_PHYSCOPY 31 /* sys_physcopy(src_addr,dst_addr,count) */
|
||||||
# define SYS_VIRVCOPY 32 /* sys_virvcopy(vec_ptr, vec_size) */
|
# define SYS_VIRVCOPY 32 /* sys_virvcopy(vec_ptr, vec_size) */
|
||||||
# define SYS_PHYSZERO 33 /* sys_physzero(addr,count) */
|
# define SYS_MEMSET 33 /* sys_memset(char, addr, count) */
|
||||||
# define SYS_SETPRIORITY 34 /* sys_setpriority(which,who,prio) */
|
# define SYS_SETPRIORITY 34 /* sys_setpriority(who,prio) */
|
||||||
#define NR_SYS_CALLS 35 /* number of system calls */
|
#define NR_SYS_CALLS 35 /* number of system calls */
|
||||||
|
|
||||||
/* Field names for SYS_SEGCTL. */
|
/* Field names for SYS_MEMSET, SYS_SEGCTL. */
|
||||||
|
#define MEM_PTR m1_p1 /* base */
|
||||||
|
#define MEM_COUNT m1_i1 /* count */
|
||||||
|
#define MEM_CHAR m1_i2 /* char to write */
|
||||||
#define MEM_CHUNK_BASE m4_l1 /* physical base address */
|
#define MEM_CHUNK_BASE m4_l1 /* physical base address */
|
||||||
#define MEM_CHUNK_SIZE m4_l2 /* size of mem chunk */
|
#define MEM_CHUNK_SIZE m4_l2 /* size of mem chunk */
|
||||||
#define MEM_TOT_SIZE m4_l3 /* total memory size */
|
#define MEM_TOT_SIZE m4_l3 /* total memory size */
|
||||||
#define MEM_CHUNK_TAG m4_l4 /* tag to identify chunk of mem */
|
#define MEM_CHUNK_TAG m4_l4 /* tag to identify chunk of mem */
|
||||||
|
|
||||||
|
|
||||||
/* Field names for SYS_DEVIO, SYS_VDEVIO, SYS_SDEVIO. */
|
/* Field names for SYS_DEVIO, SYS_VDEVIO, SYS_SDEVIO. */
|
||||||
#define DIO_REQUEST m2_i3 /* device in or output */
|
#define DIO_REQUEST m2_i3 /* device in or output */
|
||||||
# define DIO_INPUT 0 /* input */
|
# define DIO_INPUT 0 /* input */
|
||||||
|
@ -328,7 +335,7 @@
|
||||||
# define GET_KENV 5 /* get kernel environment string */
|
# define GET_KENV 5 /* get kernel environment string */
|
||||||
# define GET_IRQHOOKS 6 /* get the IRQ table */
|
# define GET_IRQHOOKS 6 /* get the IRQ table */
|
||||||
# define GET_KMESSAGES 7 /* get kernel messages */
|
# define GET_KMESSAGES 7 /* get kernel messages */
|
||||||
|
# define GET_PRIVTAB 8 /* get kernel privileges table */
|
||||||
# define GET_KADDRESSES 9 /* get various kernel addresses */
|
# define GET_KADDRESSES 9 /* get various kernel addresses */
|
||||||
# define GET_SCHEDINFO 10 /* get scheduling queues */
|
# define GET_SCHEDINFO 10 /* get scheduling queues */
|
||||||
# define GET_PROC 11 /* get process slot if given process */
|
# define GET_PROC 11 /* get process slot if given process */
|
||||||
|
@ -369,8 +376,9 @@
|
||||||
#define SIG_MAP m2_l1 /* used by kernel to pass signal bit map */
|
#define SIG_MAP m2_l1 /* used by kernel to pass signal bit map */
|
||||||
#define SIG_CTXT_PTR m2_p1 /* pointer to info to restore signal context */
|
#define SIG_CTXT_PTR m2_p1 /* pointer to info to restore signal context */
|
||||||
|
|
||||||
/* Field names for SYS_FORK, _EXEC, _XIT, _GETSP, _GETMAP, _NEWMAP */
|
/* Field names for SYS_FORK, _EXEC, _EXIT, _NEWMAP. */
|
||||||
#define PR_PROC_NR m1_i1 /* indicates a (child) process */
|
#define PR_PROC_NR m1_i1 /* indicates a (child) process */
|
||||||
|
#define PR_PRIORITY m1_i2 /* process priority */
|
||||||
#define PR_PPROC_NR m1_i2 /* indicates a (parent) process */
|
#define PR_PPROC_NR m1_i2 /* indicates a (parent) process */
|
||||||
#define PR_PID m1_i3 /* process id at process manager */
|
#define PR_PID m1_i3 /* process id at process manager */
|
||||||
#define PR_STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */
|
#define PR_STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */
|
||||||
|
@ -379,10 +387,6 @@
|
||||||
#define PR_IP_PTR m1_p3 /* initial value for ip after exec */
|
#define PR_IP_PTR m1_p3 /* initial value for ip after exec */
|
||||||
#define PR_MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
|
#define PR_MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
|
||||||
|
|
||||||
/* Field names for SYS_PHYSZERO */
|
|
||||||
#define PZ_MEM_PTR m1_p1 /* base */
|
|
||||||
#define PZ_COUNT m1_i1 /* count */
|
|
||||||
|
|
||||||
/* Field names for SELECT (FS). */
|
/* Field names for SELECT (FS). */
|
||||||
#define SEL_NFDS m8_i1
|
#define SEL_NFDS m8_i1
|
||||||
#define SEL_READFDS m8_p1
|
#define SEL_READFDS m8_p1
|
||||||
|
@ -397,7 +401,6 @@
|
||||||
/* Miscellaneous request types and field names, e.g. used by IS server. */
|
/* Miscellaneous request types and field names, e.g. used by IS server. */
|
||||||
#define PANIC_DUMPS 97 /* debug dumps at the TTY on RBT_PANIC */
|
#define PANIC_DUMPS 97 /* debug dumps at the TTY on RBT_PANIC */
|
||||||
#define FKEY_CONTROL 98 /* control a function key at the TTY */
|
#define FKEY_CONTROL 98 /* control a function key at the TTY */
|
||||||
#define FKEY_PRESSED 99 /* notify process of function key event */
|
|
||||||
# define FKEY_REQUEST m2_i1 /* request to perform at TTY */
|
# define FKEY_REQUEST m2_i1 /* request to perform at TTY */
|
||||||
# define FKEY_MAP 10 /* observe function key */
|
# define FKEY_MAP 10 /* observe function key */
|
||||||
# define FKEY_UNMAP 11 /* stop observing function key */
|
# define FKEY_UNMAP 11 /* stop observing function key */
|
||||||
|
|
|
@ -30,8 +30,12 @@
|
||||||
#define _PTR_SIZE _EM_WSIZE
|
#define _PTR_SIZE _EM_WSIZE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Number of slots in the process table for non-kernel processes. */
|
/* Number of slots in the process table for non-kernel processes. The number
|
||||||
|
* of system processes defines how many processes with special privileges
|
||||||
|
* there can be. User processes share the same properties and count for one.
|
||||||
|
*/
|
||||||
#define NR_PROCS 64
|
#define NR_PROCS 64
|
||||||
|
#define NR_SYS_PROCS 32
|
||||||
|
|
||||||
/* The buffer cache should be made as large as you can afford. */
|
/* The buffer cache should be made as large as you can afford. */
|
||||||
#if (MACHINE == IBM_PC && _WORD_SIZE == 2)
|
#if (MACHINE == IBM_PC && _WORD_SIZE == 2)
|
||||||
|
@ -64,10 +68,6 @@
|
||||||
/* Enable or disable swapping processes to disk. */
|
/* Enable or disable swapping processes to disk. */
|
||||||
#define ENABLE_SWAP 1
|
#define ENABLE_SWAP 1
|
||||||
|
|
||||||
/* Enable or disable kernel calls (allows for minimal kernel). */
|
|
||||||
#define ENABLE_K_DEBUGGING 0 /* kernel debugging calls */
|
|
||||||
#define ENABLE_K_LOCKCHECK 0 /* kernel lock() sanity check */
|
|
||||||
|
|
||||||
/* Include or exclude an image of /dev/boot in the boot image. */
|
/* Include or exclude an image of /dev/boot in the boot image. */
|
||||||
#define ENABLE_BOOTDEV 0
|
#define ENABLE_BOOTDEV 0
|
||||||
|
|
||||||
|
@ -104,22 +104,8 @@
|
||||||
#define ENABLE_BINCOMPAT 0 /* for binaries using obsolete calls */
|
#define ENABLE_BINCOMPAT 0 /* for binaries using obsolete calls */
|
||||||
#define ENABLE_SRCCOMPAT 0 /* for sources using obsolete calls */
|
#define ENABLE_SRCCOMPAT 0 /* for sources using obsolete calls */
|
||||||
|
|
||||||
/* Include or exclude security sensitive code, i.e., enable or disable certain
|
/* Which process should receive diagnostics from the kernel and system? */
|
||||||
* code sections that would allow special priviliges to user-level processes.
|
#define PRINTF_PROC TTY
|
||||||
*/
|
|
||||||
#define ENABLE_USERPRIV 1 /* allow special user mode privileges */
|
|
||||||
|
|
||||||
/* User mode privileges. Be careful to set these security related features.
|
|
||||||
* USERBIOS allows user processes to perform INT86, GLDT86, and SLDT86 MIOC
|
|
||||||
* calls; USERIOPL set the CPU's I/O Protection Level bits so that user
|
|
||||||
* processes can access I/O on opening /dev/mem/ or /dev/kmem/. In normal
|
|
||||||
* operation, only the kernel should be trusted to do all this. Note that
|
|
||||||
* ENABLE_USERPRIV must be set to 1 to allow the features anyway.
|
|
||||||
*/
|
|
||||||
#define ENABLE_USERBIOS 0 /* enable user mode BIOS calls */
|
|
||||||
#define ENABLE_USERIOPL 0 /* enable CPU's IOPL bits for /dev/(k)mem */
|
|
||||||
|
|
||||||
#define PRINTF_PROC IS_PROC_NR
|
|
||||||
|
|
||||||
/* NR_CONS, NR_RS_LINES, and NR_PTYS determine the number of terminals the
|
/* NR_CONS, NR_RS_LINES, and NR_PTYS determine the number of terminals the
|
||||||
* system can handle.
|
* system can handle.
|
||||||
|
@ -128,17 +114,6 @@
|
||||||
#define NR_RS_LINES 0 /* # rs232 terminals (0 to 4) */
|
#define NR_RS_LINES 0 /* # rs232 terminals (0 to 4) */
|
||||||
#define NR_PTYS 32 /* # pseudo terminals (0 to 64) */
|
#define NR_PTYS 32 /* # pseudo terminals (0 to 64) */
|
||||||
|
|
||||||
/* these timing functions use quite a bit more kernel memory to hold
|
|
||||||
* timing data.
|
|
||||||
*/
|
|
||||||
#define ENABLE_INT_TIMING 0
|
|
||||||
#define ENABLE_LOCK_TIMING 0
|
|
||||||
|
|
||||||
#if ENABLE_LOCK_TIMING
|
|
||||||
#define TIMING_POINTS 20
|
|
||||||
#define TIMING_CATEGORIES 20
|
|
||||||
#define TIMING_NAME 10
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* There are no user-settable parameters after this line *
|
* There are no user-settable parameters after this line *
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#define SUPER_USER (uid_t) 0 /* uid_t of superuser */
|
#define SUPER_USER (uid_t) 0 /* uid_t of superuser */
|
||||||
|
|
||||||
|
/* Devices. */
|
||||||
#define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */
|
#define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */
|
||||||
#define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */
|
#define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */
|
||||||
|
|
||||||
|
@ -27,6 +28,11 @@
|
||||||
#define NR_IOREQS MIN(NR_BUFS, 64)
|
#define NR_IOREQS MIN(NR_BUFS, 64)
|
||||||
/* maximum number of entries in an iorequest */
|
/* maximum number of entries in an iorequest */
|
||||||
|
|
||||||
|
/* Message passing constants. */
|
||||||
|
#define MESS_SIZE (sizeof(message)) /* might need usizeof from FS here */
|
||||||
|
#define NIL_MESS ((message *) 0) /* null pointer */
|
||||||
|
|
||||||
|
/* Memory related constants. */
|
||||||
#define SEGMENT_TYPE 0xFF00 /* bit mask to get segment type */
|
#define SEGMENT_TYPE 0xFF00 /* bit mask to get segment type */
|
||||||
#define SEGMENT_INDEX 0x00FF /* bit mask to get segment index */
|
#define SEGMENT_INDEX 0x00FF /* bit mask to get segment index */
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ typedef struct {
|
||||||
|
|
||||||
/* Hide names to avoid name space pollution. */
|
/* Hide names to avoid name space pollution. */
|
||||||
#define echo _echo
|
#define echo _echo
|
||||||
|
#define alert _alert
|
||||||
#define sendrec _sendrec
|
#define sendrec _sendrec
|
||||||
#define receive _receive
|
#define receive _receive
|
||||||
#define send _send
|
#define send _send
|
||||||
|
@ -109,6 +110,7 @@ typedef struct {
|
||||||
#define nb_send _nb_send
|
#define nb_send _nb_send
|
||||||
|
|
||||||
_PROTOTYPE( int echo, (message *m_ptr) );
|
_PROTOTYPE( int echo, (message *m_ptr) );
|
||||||
|
_PROTOTYPE( int alert, (int dest) );
|
||||||
_PROTOTYPE( int sendrec, (int src_dest, message *m_ptr) );
|
_PROTOTYPE( int sendrec, (int src_dest, message *m_ptr) );
|
||||||
_PROTOTYPE( int receive, (int src, message *m_ptr) );
|
_PROTOTYPE( int receive, (int src, message *m_ptr) );
|
||||||
_PROTOTYPE( int send, (int dest, message *m_ptr) );
|
_PROTOTYPE( int send, (int dest, message *m_ptr) );
|
||||||
|
|
|
@ -1,18 +1,4 @@
|
||||||
/* Prototypes for system library functions.
|
/* Prototypes for system library functions. */
|
||||||
*
|
|
||||||
* Changes:
|
|
||||||
* Nov 15, 2004 unified sys_sigctl calls (Jorrit N. Herder)
|
|
||||||
* Oct 28, 2004 added nb_send, nb_receive (Jorrit N. Herder)
|
|
||||||
* Oct 26, 2004 added sys_sdevio (Jorrit N. Herder)
|
|
||||||
* Oct 18, 2004 added sys_irqctl (Jorrit N. Herder)
|
|
||||||
* Oct 10, 2004 removed sys_findproc (Jorrit N. Herder)
|
|
||||||
* Sep 23, 2004 added sys_getsig (Jorrit N. Herder)
|
|
||||||
* Sep 09, 2004 added sys_physcopy, sys_vircopy (Jorrit N. Herder)
|
|
||||||
* Aug 15, 2004 added sys_getinfo (Jorrit N. Herder)
|
|
||||||
* Jul 23, 2004 added sys_umap (Jorrit N. Herder)
|
|
||||||
* Jul 13, 2004 added sys_enable_iop, sys_segctl (Jorrit N. Herder)
|
|
||||||
* Mar 20, 2004 added sys_devio, sys_vdevio (Jorrit N. Herder)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SYSLIB_H
|
#ifndef _SYSLIB_H
|
||||||
#define _SYSLIB_H
|
#define _SYSLIB_H
|
||||||
|
@ -29,36 +15,23 @@
|
||||||
#include <minix/devio.h>
|
#include <minix/devio.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SYSTASK SYSTEM
|
||||||
|
|
||||||
/*==========================================================================*
|
/*==========================================================================*
|
||||||
* Minix system library. *
|
* Minix system library. *
|
||||||
*==========================================================================*/
|
*==========================================================================*/
|
||||||
_PROTOTYPE( int printf, (const char *fmt, ...) );
|
|
||||||
_PROTOTYPE( void kputc, (int c) );
|
|
||||||
_PROTOTYPE( int _taskcall, (int who, int syscallnr, message *msgptr) );
|
_PROTOTYPE( int _taskcall, (int who, int syscallnr, message *msgptr) );
|
||||||
|
|
||||||
_PROTOTYPE( int sys_abort, (int how, ...) );
|
_PROTOTYPE( int sys_abort, (int how, ...) );
|
||||||
_PROTOTYPE( int sys_adjmap, (int proc, struct mem_map *ptr,
|
|
||||||
vir_clicks data_clicks, vir_clicks sp) );
|
|
||||||
_PROTOTYPE( int sys_exec, (int proc, char *ptr, int traced,
|
_PROTOTYPE( int sys_exec, (int proc, char *ptr, int traced,
|
||||||
char *aout, vir_bytes initpc) );
|
char *aout, vir_bytes initpc) );
|
||||||
_PROTOTYPE( int sys_execmap, (int proc, struct mem_map *ptr) );
|
|
||||||
_PROTOTYPE( int sys_fork, (int parent, int child, int pid) );
|
_PROTOTYPE( int sys_fork, (int parent, int child, int pid) );
|
||||||
_PROTOTYPE( int sys_getsp, (int proc, vir_bytes *newsp) );
|
|
||||||
_PROTOTYPE( int sys_newmap, (int proc, struct mem_map *ptr) );
|
_PROTOTYPE( int sys_newmap, (int proc, struct mem_map *ptr) );
|
||||||
_PROTOTYPE( int sys_getmap, (int proc, struct mem_map *ptr) );
|
_PROTOTYPE( int sys_exit, (int proc) );
|
||||||
_PROTOTYPE( int sys_times, (int proc_nr, clock_t *ptr) );
|
|
||||||
_PROTOTYPE( int sys_getuptime, (clock_t *ticks) );
|
|
||||||
_PROTOTYPE( int sys_trace, (int req, int proc, long addr, long *data_p) );
|
_PROTOTYPE( int sys_trace, (int req, int proc, long addr, long *data_p) );
|
||||||
_PROTOTYPE( int sys_setpriority, (int proc, int prio) );
|
|
||||||
|
|
||||||
/* A system server can directly exit itself with the sys_xit call. The
|
|
||||||
* status argument is here to resemble exit(2), but not passed to kernel.
|
|
||||||
*/
|
|
||||||
#define sys_exit(status) sys_xit(SELF)
|
|
||||||
_PROTOTYPE( int sys_xit, (int proc) );
|
|
||||||
|
|
||||||
_PROTOTYPE( int sys_svrctl, (int proc, int req, int priv,vir_bytes argp));
|
_PROTOTYPE( int sys_svrctl, (int proc, int req, int priv,vir_bytes argp));
|
||||||
|
_PROTOTYPE( int sys_setpriority, (int proc, int prio) );
|
||||||
|
|
||||||
|
|
||||||
/* Shorthands for sys_sdevio() system call. */
|
/* Shorthands for sys_sdevio() system call. */
|
||||||
|
@ -73,10 +46,10 @@ _PROTOTYPE( int sys_svrctl, (int proc, int req, int priv,vir_bytes argp));
|
||||||
_PROTOTYPE( int sys_sdevio, (int req, long port, int type, int proc_nr,
|
_PROTOTYPE( int sys_sdevio, (int req, long port, int type, int proc_nr,
|
||||||
void *buffer, int count) );
|
void *buffer, int count) );
|
||||||
|
|
||||||
/* Clock functionality: (un)schedule an alarm call. */
|
/* Clock functionality: get system times or (un)schedule an alarm call. */
|
||||||
_PROTOTYPE(int sys_flagalrm, (clock_t ticks, int *flag_ptr) );
|
_PROTOTYPE( int sys_times, (int proc_nr, clock_t *ptr) );
|
||||||
_PROTOTYPE(int sys_signalrm, (int proc_nr, clock_t *ticks) );
|
#define sys_syncalrm sys_setalarm
|
||||||
_PROTOTYPE(int sys_syncalrm, (int proc_nr, clock_t exp_time, int abs_time) );
|
_PROTOTYPE(int sys_setalarm, (int proc_nr, clock_t exp_time, int abs_time) );
|
||||||
|
|
||||||
/* Shorthands for sys_irqctl() system call. */
|
/* Shorthands for sys_irqctl() system call. */
|
||||||
#define sys_irqdisable(hook_id) \
|
#define sys_irqdisable(hook_id) \
|
||||||
|
@ -108,19 +81,19 @@ _PROTOTYPE(int sys_vircopy, (int src_proc, int src_seg, vir_bytes src_vir,
|
||||||
sys_physcopy(NONE, PHYS_SEG, src_phys, NONE, PHYS_SEG, dst_phys, bytes)
|
sys_physcopy(NONE, PHYS_SEG, src_phys, NONE, PHYS_SEG, dst_phys, bytes)
|
||||||
_PROTOTYPE(int sys_physcopy, (int src_proc, int src_seg, vir_bytes src_vir,
|
_PROTOTYPE(int sys_physcopy, (int src_proc, int src_seg, vir_bytes src_vir,
|
||||||
int dst_proc, int dst_seg, vir_bytes dst_vir, phys_bytes bytes) );
|
int dst_proc, int dst_seg, vir_bytes dst_vir, phys_bytes bytes) );
|
||||||
_PROTOTYPE(int sys_physzero, (phys_bytes base, phys_bytes bytes) );
|
_PROTOTYPE(int sys_memset, (char c, phys_bytes base, phys_bytes bytes) );
|
||||||
|
|
||||||
_PROTOTYPE(int sys_umap, (int proc_nr, int seg, vir_bytes vir_addr,
|
_PROTOTYPE(int sys_umap, (int proc_nr, int seg, vir_bytes vir_addr,
|
||||||
vir_bytes bytes, phys_bytes *phys_addr) );
|
vir_bytes bytes, phys_bytes *phys_addr) );
|
||||||
_PROTOTYPE(int sys_segctl, (int *index, u16_t *seg, vir_bytes *off,
|
_PROTOTYPE(int sys_segctl, (int *index, u16_t *seg, vir_bytes *off,
|
||||||
phys_bytes phys, vir_bytes size));
|
phys_bytes phys, vir_bytes size));
|
||||||
_PROTOTYPE(int sys_enable_iop, (int proc_nr) );
|
|
||||||
|
|
||||||
/* Shorthands for sys_getinfo() system call. */
|
/* Shorthands for sys_getinfo() system call. */
|
||||||
#define sys_getkmessages(dst) sys_getinfo(GET_KMESSAGES, dst, 0,0,0)
|
#define sys_getkmessages(dst) sys_getinfo(GET_KMESSAGES, dst, 0,0,0)
|
||||||
#define sys_getkinfo(dst) sys_getinfo(GET_KINFO, dst, 0,0,0)
|
#define sys_getkinfo(dst) sys_getinfo(GET_KINFO, dst, 0,0,0)
|
||||||
#define sys_getmachine(dst) sys_getinfo(GET_MACHINE, dst, 0,0,0)
|
#define sys_getmachine(dst) sys_getinfo(GET_MACHINE, dst, 0,0,0)
|
||||||
#define sys_getproctab(dst) sys_getinfo(GET_PROCTAB, dst, 0,0,0)
|
#define sys_getproctab(dst) sys_getinfo(GET_PROCTAB, dst, 0,0,0)
|
||||||
|
#define sys_getprivtab(dst) sys_getinfo(GET_PRIVTAB, dst, 0,0,0)
|
||||||
#define sys_getproc(dst,nr) sys_getinfo(GET_PROC, dst, 0,0, nr)
|
#define sys_getproc(dst,nr) sys_getinfo(GET_PROC, dst, 0,0, nr)
|
||||||
#define sys_getrandomness(dst) sys_getinfo(GET_RANDOMNESS, dst, 0,0,0)
|
#define sys_getrandomness(dst) sys_getinfo(GET_RANDOMNESS, dst, 0,0,0)
|
||||||
#define sys_getimage(dst) sys_getinfo(GET_IMAGE, dst, 0,0,0)
|
#define sys_getimage(dst) sys_getinfo(GET_IMAGE, dst, 0,0,0)
|
||||||
|
@ -131,13 +104,12 @@ _PROTOTYPE(int sys_enable_iop, (int proc_nr) );
|
||||||
_PROTOTYPE(int sys_getinfo, (int request, void *val_ptr, int val_len,
|
_PROTOTYPE(int sys_getinfo, (int request, void *val_ptr, int val_len,
|
||||||
void *key_ptr, int key_len) );
|
void *key_ptr, int key_len) );
|
||||||
|
|
||||||
|
|
||||||
/* Signal control. */
|
/* Signal control. */
|
||||||
_PROTOTYPE(int sys_kill, (int proc, int sig) );
|
_PROTOTYPE(int sys_kill, (int proc, int sig) );
|
||||||
_PROTOTYPE(int sys_sigsend, (int proc_nr, struct sigmsg *sig_ctxt) );
|
_PROTOTYPE(int sys_sigsend, (int proc_nr, struct sigmsg *sig_ctxt) );
|
||||||
_PROTOTYPE(int sys_sigreturn, (int proc_nr, struct sigmsg *sig_ctxt, int flags) );
|
_PROTOTYPE(int sys_sigreturn, (int proc_nr, struct sigmsg *sig_ctxt, int flags) );
|
||||||
_PROTOTYPE(int sys_getsig, (int *k_proc_nr, sigset_t *k_sig_map) );
|
_PROTOTYPE(int sys_getksig, (int *k_proc_nr, sigset_t *k_sig_map) );
|
||||||
_PROTOTYPE(int sys_endsig, (int proc_nr) );
|
_PROTOTYPE(int sys_endksig, (int proc_nr) );
|
||||||
|
|
||||||
/* NOTE: two different approaches were used to distinguish the device I/O
|
/* NOTE: two different approaches were used to distinguish the device I/O
|
||||||
* types 'byte', 'word', 'long': the latter uses #define and results in a
|
* types 'byte', 'word', 'long': the latter uses #define and results in a
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Type definitions. */
|
/* Type definitions. */
|
||||||
typedef unsigned int vir_clicks; /* virtual addresses and lengths in clicks */
|
typedef unsigned int vir_clicks; /* virtual addr/length in clicks */
|
||||||
typedef unsigned long phys_bytes;/* physical addresses and lengths in bytes */
|
typedef unsigned long phys_bytes; /* physical addr/length in bytes */
|
||||||
typedef unsigned int phys_clicks;/* physical addresses and lengths in clicks */
|
typedef unsigned int phys_clicks; /* physical addr/length in clicks */
|
||||||
|
|
||||||
#if (CHIP == INTEL)
|
#if (CHIP == INTEL)
|
||||||
typedef unsigned int vir_bytes; /* virtual addresses and lengths in bytes */
|
typedef unsigned int vir_bytes; /* virtual addresses and lengths in bytes */
|
||||||
|
@ -59,8 +59,8 @@ typedef struct {
|
||||||
} iovec_t;
|
} iovec_t;
|
||||||
|
|
||||||
|
|
||||||
/* MM passes the address of a structure of this type to KERNEL when
|
/* PM passes the address of a structure of this type to KERNEL when
|
||||||
* do_sendsig() is invoked as part of the signal catching mechanism.
|
* sys_sendsig() is invoked as part of the signal catching mechanism.
|
||||||
* The structure contain all the information that KERNEL needs to build
|
* The structure contain all the information that KERNEL needs to build
|
||||||
* the signal stack.
|
* the signal stack.
|
||||||
*/
|
*/
|
||||||
|
@ -72,9 +72,6 @@ struct sigmsg {
|
||||||
vir_bytes sm_stkptr; /* user stack pointer */
|
vir_bytes sm_stkptr; /* user stack pointer */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MESS_SIZE (sizeof(message)) /* might need usizeof from fs here */
|
|
||||||
#define NIL_MESS ((message *) 0)
|
|
||||||
|
|
||||||
/* This is used to obtain system information through SYS_GETINFO. */
|
/* This is used to obtain system information through SYS_GETINFO. */
|
||||||
struct kinfo {
|
struct kinfo {
|
||||||
phys_bytes code_base; /* base of kernel code */
|
phys_bytes code_base; /* base of kernel code */
|
||||||
|
@ -93,9 +90,7 @@ struct kinfo {
|
||||||
int nr_tasks; /* number of kernel tasks */
|
int nr_tasks; /* number of kernel tasks */
|
||||||
char release[4]; /* kernel release number */
|
char release[4]; /* kernel release number */
|
||||||
char version[4]; /* kernel version number */
|
char version[4]; /* kernel version number */
|
||||||
#if ENABLE_K_LOCKCHECK
|
int relocking; /* relocking check (for debugging) */
|
||||||
int relocking;
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct machine {
|
struct machine {
|
||||||
|
@ -107,15 +102,4 @@ struct machine {
|
||||||
int vdu_vga;
|
int vdu_vga;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Timing data of lock()/unlock() sequences, if selected to be compiled in. */
|
|
||||||
|
|
||||||
#if ENABLE_LOCK_TIMING
|
|
||||||
struct lock_timedata {
|
|
||||||
char names[TIMING_NAME];
|
|
||||||
unsigned long lock_timings[TIMING_POINTS];
|
|
||||||
unsigned long lock_timings_range[2];
|
|
||||||
unsigned long binsize, resets, misses, measurements;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _TYPE_H */
|
#endif /* _TYPE_H */
|
||||||
|
|
|
@ -44,8 +44,10 @@ typedef struct timer
|
||||||
/* These definitions can be used to initialize a timer variable and to set
|
/* These definitions can be used to initialize a timer variable and to set
|
||||||
* the timer's argument before passing it to tmrs_settimer.
|
* the timer's argument before passing it to tmrs_settimer.
|
||||||
*/
|
*/
|
||||||
#define tmr_inittimer(tp) (void)((tp)->tmr_exp_time = TMR_NEVER)
|
#define tmr_inittimer(tp) (void)((tp)->tmr_exp_time = TMR_NEVER, \
|
||||||
|
(tp)->tmr_next = NULL)
|
||||||
#define tmr_arg(tp) (&(tp)->tmr_arg)
|
#define tmr_arg(tp) (&(tp)->tmr_arg)
|
||||||
|
#define tmr_exp_time(tp) (&(tp)->tmr_exp_time)
|
||||||
|
|
||||||
|
|
||||||
/* The following generic timer management functions are available. They
|
/* The following generic timer management functions are available. They
|
||||||
|
|
Loading…
Reference in a new issue