Annotation of coherent/f/usr/include/kernel/systab.h, revision 1.1.1.1

1.1       root        1: /* (-lgl
                      2:  *     COHERENT 386 Device Driver Kit release 2.0
                      3:  *     Copyright (c) 1982, 1992 by Mark Williams Company.
                      4:  *     All rights reserved. May not be copied without permission.
                      5:  -lgl) */
                      6: /*
                      7:  * Header for system call table.
                      8:  */
                      9: 
                     10: #ifndef __KERNEL_SYSTAB_H__
                     11: #define __KERNEL_SYSTAB_H__
                     12: 
                     13: #include <common/ccompat.h>
                     14: #include <common/gregset.h>
                     15: 
                     16: #if    _I386
                     17: #include <kernel/param.h>
                     18: #else
                     19: #include <kernel/const.h>
                     20: #endif
                     21: 
                     22: /*
                     23:  * Type of a system call function; note that we prototype a function here that
                     24:  * takes 6 arguments plus a pointer to a register set. In fact, the calling
                     25:  * sequence is different, but this seems more appropriate than "..." for an
                     26:  * argument list.
                     27:  *
                     28:  * Either method is non-portable, but this one should work in more cases. To
                     29:  * make it work in all cases, we need a selective dispatch based on the real
                     30:  * number of arguments.
                     31:  */
                     32: 
                     33: typedef        long         (* __sysfunc_t)    __PROTO ((int _arg1, int _arg2,
                     34:                                                  int _arg3, int _arg4,
                     35:                                                  int _arg5, int _arg6,
                     36:                                                  gregset_t * _regsetp));
                     37: typedef        long         (* __sysfunc0_t)   __PROTO ((gregset_t * _regsetp));
                     38: typedef        long         (* __sysfunc1_t)   __PROTO ((int _arg1,
                     39:                                                  gregset_t * _regsetp));
                     40: typedef        long         (* __sysfunc2_t)   __PROTO ((int _arg1, int _arg2,
                     41:                                                  gregset_t * _regsetp));
                     42: typedef        long         (* __sysfunc3_t)   __PROTO ((int _arg1, int _arg2,
                     43:                                                  int _arg3,
                     44:                                                  gregset_t * _regsetp));
                     45: typedef        long         (* __sysfunc4_t)   __PROTO ((int _arg1, int _arg2,
                     46:                                                  int _arg3, int _arg4,
                     47:                                                  gregset_t * _regsetp));
                     48: typedef        long         (* __sysfunc5_t)   __PROTO ((int _arg1, int _arg2,
                     49:                                                  int _arg3, int _arg4,
                     50:                                                  int _arg5,
                     51:                                                  gregset_t * _regsetp));
                     52: 
                     53: /*
                     54:  * Function return types, as in the "s_type" member below.
                     55:  */
                     56: 
                     57: enum {
                     58:        __SYSCALL_INT   = 2,
                     59:        __SYSCALL_LONG  = 4
                     60: };
                     61: 
                     62: 
                     63: /*
                     64:  * System call table structure.
                     65:  */
                     66: 
                     67: struct systab {
                     68: #if    _I386
                     69:        unsigned char   s_nargs;                /* number of arguments */
                     70: #else
                     71:        char    s_alen;                 /* Size of argument list */
                     72: #endif
                     73:        char            s_type;                 /* Type returned by function */
                     74:        __sysfunc_t     s_func;                 /* Function */
                     75: };
                     76: 
                     77: 
                     78: #define        __DOSYSCALL(argc,func,args,regsetp) \
                     79:        ((argc) == 0 ? (* (__sysfunc0_t) (func)) (regsetp) : \
                     80:         (argc) == 1 ? (* (__sysfunc1_t) (func)) ((args) [0], (regsetp)) : \
                     81:         (argc) == 2 ? (* (__sysfunc2_t) (func)) ((args) [0], (args) [1], \
                     82:                                                  (regsetp)) : \
                     83:         (argc) == 3 ? (* (__sysfunc3_t) (func)) ((args) [0], (args) [1], \
                     84:                                                  (args) [2], (regsetp)) : \
                     85:         (argc) == 4 ? (* (__sysfunc4_t) (func)) ((args) [0], (args) [1], \
                     86:                                                  (args) [2], (args) [3], \
                     87:                                                  (regsetp)) : \
                     88:         (argc) == 5 ? (* (__sysfunc5_t) (func)) ((args) [0], (args) [1], \
                     89:                                                  (args) [2], (args) [3], \
                     90:                                                  (args) [4], (regsetp)) : \
                     91:         (argc) == 6 ? (* (func)) ((args) [0], (args) [1], (args) [2], \
                     92:                                   (args) [3], (args) [4], (args) [5], \
                     93:                                   (regsetp)) : \
                     94:         (panic ("Bad number of system call arguments"), 0))
                     95: 
                     96: 
                     97: /*
                     98:  * System call table.
                     99:  */
                    100: 
                    101: extern struct systab   sysitab [NMICALL];
                    102: extern struct systab   sys286tab [NMICALL];
                    103: extern struct systab   h28itab [H28CALL];
                    104: extern struct systab   cohcall;
                    105: 
                    106: #endif /* ! defined (__KERNEL_SYSTAB_H__) */
                    107: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.