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

1.1       root        1: #ifndef        __KERNEL_DDI_PROC_H__
                      2: #define        __KERNEL_DDI_PROC_H__
                      3: 
                      4: /*
                      5:  * This internal header file defines structures and an access procedure for
                      6:  * DDI/DKI per-process state that may be accessed outside the process context.
                      7:  * This corresponds to data stored in the process table in traditional Unix
                      8:  * systems, and we expect that this would probably be implemented that way.
                      9:  * However, the DDI/DKI system data is kept separate from the host data to
                     10:  * ease porting by reducing coupling with the host system to a single accessor
                     11:  * function. We anticipate that space reserved in the process structure by the
                     12:  * host for this system will be opaque to the rest of the kernel.
                     13:  */
                     14: 
                     15: /*
                     16:  *-IMPORTS:
                     17:  *     <common/ccompat.h>
                     18:  *             __EXTERN_C_BEGIN__
                     19:  *             __EXTERN_C_END__
                     20:  *             __PROTO ()
                     21:  *     <kernel/x86lock.h>
                     22:  *             atomic_ptr_t
                     23:  */
                     24: 
                     25: #include <common/feature.h>
                     26: #include <common/ccompat.h>
                     27: #include <kernel/x86lock.h>
                     28: 
                     29: #if    ! _DDI_DKI
                     30: # error        You must be compiling in the DDI/DKI environment to use this header
                     31: #endif
                     32: 
                     33: #if    __COHERENT__
                     34: 
                     35: /*
                     36:  * In <sys/proc.h>, cprocp is guarded by #ifdef KERNEL.
                     37:  */
                     38: 
                     39: #if    ! __KERNEL__
                     40: #define        __KERNEL__      2
                     41: #endif
                     42: 
                     43: #include <sys/proc.h>
                     44: 
                     45: #if    __KERNEL__ == 2
                     46: #undef __KERNEL__
                     47: #endif
                     48: 
                     49: #define        CURRENT_PROCESS()       cprocp
                     50: 
                     51: #elif  defined (__MSDOS__)
                     52: 
                     53: #include <sys/dosproc.h>
                     54: 
                     55: #endif
                     56: 
                     57: 
                     58: /*
                     59:  * The following structure defines the "process-table" data that a DDI/DKI
                     60:  * scheduling functions need to be able to access. Note that the "pn_plist"
                     61:  * member normally is used to point at the process list that this node is
                     62:  * threaded on. For reasons discussed elsewhere, this member is the only
                     63:  * member intended to be accessed without having a prior lock on the list
                     64:  * header (since it is used to *find* the list header), and so must be
                     65:  * accessed atomically.
                     66:  */
                     67: 
                     68: typedef struct proc_node pnode_t;
                     69: 
                     70: struct proc_node {
                     71:        pnode_t       * pn_next;        /* for queueing waiting processes */
                     72:        pnode_t       * pn_prev;
                     73: 
                     74:        short           pn_priority;    /* abstract process priority */
                     75:        short           pn_flag;        /* true if sleep is interruptible */
                     76: 
                     77:        atomic_ptr_t    pn_plistp;      /* where we are queued */
                     78: };
                     79: 
                     80: 
                     81: /*
                     82:  * DDI/DKI per-process data that may be needed outside the process context.
                     83:  */
                     84: 
                     85: struct ddi_proc_data {
                     86:        pnode_t         dp_pnode;
                     87:        unsigned short  dp_refcount;
                     88: };
                     89: 
                     90: typedef        struct ddi_proc_data    dpdata_t;
                     91: 
                     92: 
                     93: __EXTERN_C_BEGIN__
                     94: 
                     95: dpdata_t      *        ddi_proc_data   __PROTO ((void));
                     96: 
                     97: __EXTERN_C_END__
                     98: 
                     99: #define        ddi_proc_data() ((dpdata_t *) & CURRENT_PROCESS ()->p_ddi_space)
                    100: 
                    101: #endif /* ! defined (__KERNEL_DDI_PROC_H__) */

unix.superglobalmegacorp.com

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