Annotation of OSKit-Mach/kern/shuttle.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1993,1994 The University of Utah and
                      3:  * the Computer Systems Laboratory (CSL).  All rights reserved.
                      4:  *
                      5:  * Permission to use, copy, modify and distribute this software and its
                      6:  * documentation is hereby granted, provided that both the copyright
                      7:  * notice and this permission notice appear in all copies of the
                      8:  * software, derivative works or modified versions, and any portions
                      9:  * thereof, and that both notices appear in supporting documentation.
                     10:  *
                     11:  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
                     12:  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
                     13:  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     14:  *
                     15:  * CSL requests users of this software to return to [email protected] any
                     16:  * improvements that they make and grant CSL redistribution rights.
                     17:  *
                     18:  *      Author: Bryan Ford, University of Utah CSL
                     19:  */
                     20: /*
                     21:  *     File:   shuttle.h
                     22:  *     Author: Bryan Ford
                     23:  *
                     24:  *     This file contains definitions for shuttles,
                     25:  *     which handle microscheduling for individual threads.
                     26:  *
                     27:  */
                     28: 
                     29: #ifndef        _KERN_SHUTTLE_H_
                     30: #define _KERN_SHUTTLE_H_
                     31: 
                     32: #include <kern/lock.h>
                     33: 
                     34: 
                     35: 
                     36: struct Shuttle {
                     37:        /* XXX must be first in thread */
                     38: /*
                     39:  *     NOTE:   The runq field in the thread structure has an unusual
                     40:  *     locking protocol.  If its value is RUN_QUEUE_NULL, then it is
                     41:  *     locked by the thread_lock, but if its value is something else
                     42:  *     (i.e. a run_queue) then it is locked by that run_queue's lock.
                     43:  */
                     44:        queue_chain_t   links;          /* current run queue links */
                     45:        run_queue_t     runq;           /* run queue p is on SEE BELOW */
                     46: 
                     47:        /* Next pointer when on a queue */
                     48:        struct Shuttle *next;
                     49: 
                     50:        /* Micropriority level */
                     51:        int priority;
                     52: 
                     53:        /* General-purpose pointer field whose use depends on what the
                     54:           thread happens to be doing */
                     55:        void            *message;
                     56: 
                     57:        int foobar[1];
                     58: };
                     59: typedef struct Shuttle Shuttle;
                     60: 
                     61: 
                     62: 
                     63: /* Exported functions */
                     64: 
                     65: 
                     66: 
                     67: /* Machine-dependent code must define the following functions */
                     68: 
                     69: 
                     70: 
                     71: #endif _KERN_SHUTTLE_H_

unix.superglobalmegacorp.com

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