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

1.1       root        1: #ifndef        __KERNEL_DDI_GLOB_H__
                      2: #define        __KERNEL_DDI_GLOB_H__
                      3: 
                      4: /*
                      5:  * This internal header file defines structures and an access procedure for
                      6:  * DDI/DKI global data that must be shared between all CPUs. Note that this
                      7:  * may not be all the truly global context; examine the STREAMS header files
                      8:  * for additional global data specific to STREAMS.
                      9:  */
                     10: 
                     11: /*
                     12:  *-IMPORTS:
                     13:  *     <common/ccompat.h>
                     14:  *             __EXTERN_C_BEGIN__
                     15:  *             __EXTERN_C_END__
                     16:  *             __PROTO ()
                     17:  *     <kernel/_lock.h>
                     18:  *             lock_t
                     19:  *     <kernel/_toid.h>
                     20:  *             toid_t
                     21:  *     <kernel/x86lock.h>
                     22:  *             atomic_uchar_t
                     23:  */
                     24: 
                     25: #include <common/ccompat.h>
                     26: #include <kernel/x86lock.h>
                     27: #include <kernel/_lock.h>
                     28: #include <kernel/_toid.h>
                     29: #include <kernel/ddi_data.h>
                     30: 
                     31: 
                     32: /*
                     33:  * Timeout events are stored on a global queue, both while they are pending
                     34:  * and once they have expired. When an event expires, it is bound to a CPU
                     35:  * (if one was not specified when the event was created) and a function to
                     36:  * process expired events on that CPU is deferred.
                     37:  */
                     38: 
                     39: typedef        struct timeout  timeout_t;
                     40: 
                     41: typedef struct tlist {
                     42:        __lock_t      * td_lock;
                     43:        toid_t          td_id;
                     44:        timeout_t     * td_first;
                     45:        timeout_t     * td_run;
                     46: } timelist_t;
                     47: 
                     48: 
                     49: /*
                     50:  * Truly global data used by the DDI/DKI system (except for STREAMS global
                     51:  * data).
                     52:  */
                     53: 
                     54: struct ddi_global_data {
                     55:        /*
                     56:         * The defer-table data is at the front of the structure because it is
                     57:         * typically manipulated by hand-coded assembly-language routines.
                     58:         */
                     59: 
                     60:        defer_t         dg_defint;              /* interrupt-level defers */
                     61:        defer_t         dg_defproc;             /* process-level defers */
                     62: 
                     63:        __lock_t      * dg_polllock;            /* global lock on polling */
                     64:        __lock_t      * dg_proclock;            /* process reference count */
                     65: 
                     66:        timelist_t      dg_timeouts;            /* timeout data */
                     67: 
                     68:        atomic_uchar_t  dg_run_bufcalls;        /* bufcall check deferred */
                     69:        atomic_uchar_t  dg_run_strsched;        /* STREAMS service deferred */
                     70:        atomic_uchar_t  dg_run_time;            /* timeout check deferred */
                     71: };
                     72: 
                     73: typedef        struct ddi_global_data  dgdata_t;
                     74: 
                     75: 
                     76: __EXTERN_C_BEGIN__
                     77: 
                     78: dgdata_t      *        ddi_global_data __PROTO ((void));
                     79: 
                     80: __EXTERN_C_END__
                     81: 
                     82: 
                     83: extern dgdata_t                __ddi_global_data;
                     84: 
                     85: #define        ddi_global_data()       (& __ddi_global_data)
                     86: 
                     87: 
                     88: #endif /* ! defined (__KERNEL_DDI_GLOB_H__) */

unix.superglobalmegacorp.com

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