Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | /* * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * The contents of this file constitute Original Code as defined in and * are subject to the Apple Public Source License Version 1.1 (the * "License"). You may not use this file except in compliance with the * License. Please obtain a copy of the License at * http://www.apple.com/publicsource and read it before using this file. * * This Original Code and all software distributed under the License are * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the * License for the specific language governing rights and limitations * under the License. * * @APPLE_LICENSE_HEADER_END@ */ /* * @OSF_FREE_COPYRIGHT@ */ /* * HISTORY * * Revision 1.1.1.1 1998/09/22 21:05:32 wsanchez * Import of Mac OS X kernel (~semeria) * * Revision 1.1.1.1 1998/03/07 02:25:57 wsanchez * Import of OSF Mach kernel (~mburg) * * Revision 1.1.7.4 1995/01/18 18:35:03 ezf * updated Utah CR notice * [1995/01/18 18:30:36 ezf] * * Revision 1.1.7.3 1995/01/10 05:15:24 devrcs * mk6 CR801 - merge up from nmk18b4 to nmk18b7 * * Rev 1.1.8.2 1994/11/08 15:33:03 watkins * Add declaration for thread_pool_put_act. * [1994/12/09 21:10:56 dwm] * * Revision 1.1.7.1 1994/09/23 02:31:15 ezf * change marker to not FREE * [1994/09/22 21:38:04 ezf] * * Revision 1.1.2.9 1994/06/09 14:14:07 dswartz * Preemption merge. * [1994/06/09 14:08:37 dswartz] * * Revision 1.1.2.8 1994/06/01 19:30:14 bolinger * mk6 CR125: Update to reflect changes in access to thread_pool * of a thread_act. * [1994/06/01 19:18:25 bolinger] * * Revision 1.1.2.7 1994/03/17 22:38:37 dwm * The infamous name change: thread_activation + thread_shuttle = thread. * [1994/03/17 21:28:18 dwm] * * Revision 1.1.2.6 1994/02/09 00:42:42 dwm * Put a variety of debugging code under MACH_ASSERT, * to enhance PROD performance a bit. * [1994/02/09 00:35:13 dwm] * * Revision 1.1.2.5 1994/01/21 23:45:08 dwm * Thread_pools now embedded directly in port/pset, * delete refcount, modify protos. * [1994/01/21 23:43:13 dwm] * * Revision 1.1.2.4 1994/01/17 19:09:32 dwm * Fix ref/dealloc macros, missing semicolon. * [1994/01/17 19:09:16 dwm] * * Revision 1.1.2.3 1994/01/17 18:08:57 dwm * Add finer grained act tracing. * [1994/01/17 16:06:54 dwm] * * Revision 1.1.2.2 1994/01/14 18:42:05 bolinger * Update to reflect thread_pool_block() -> thread_pool_get_act() name * change. * [1994/01/14 18:18:40 bolinger] * * Revision 1.1.2.1 1994/01/12 17:53:21 dwm * Coloc: initial restructuring to follow Utah model. * [1994/01/12 17:15:24 dwm] * * $EndLog$ */ /* * Copyright (c) 1993 The University of Utah and * the Computer Systems Laboratory (CSL). All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. * * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. * * CSL requests users of this software to return to csl-dist@cs.utah.edu any * improvements that they make and grant CSL redistribution rights. * * Author: Bryan Ford, University of Utah CSL * * File: thread_pool.h * * Defines the thread_pool: a pool of available activations. * */ #ifndef _KERN_THREAD_POOL_H_ #define _KERN_THREAD_POOL_H_ #include <mach/kern_return.h> #include <kern/lock.h> #include <mach_assert.h> typedef struct thread_pool { /* List of available activations, all active but not in use. */ struct thread_activation *thr_acts; /* true if somebody is waiting for an activation from this pool */ int waiting; } thread_pool, *thread_pool_t; #define THREAD_POOL_NULL ((thread_pool_t)0) /* Exported to kern/startup.c only */ kern_return_t thread_pool_init(thread_pool_t new_thread_pool); /* Get an activation from a thread_pool, blocking if need be */ extern struct thread_activation *thread_pool_get_act( ipc_port_t ); extern void thread_pool_put_act( thread_act_t ); /* Wake up a waiter upon return to thread_pool */ extern void thread_pool_wakeup( thread_pool_t ); #if MACH_ASSERT /* * Debugging support - "watchacts", a patchable selective trigger */ extern unsigned int watchacts; /* debug printf trigger */ #define WA_SCHED 0x001 /* kern/sched_prim.c */ #define WA_THR 0x002 /* kern/thread.c */ #define WA_ACT_LNK 0x004 /* kern/thread_act.c act mgmt */ #define WA_ACT_HDLR 0x008 /* kern/thread_act.c act hldrs */ #define WA_TASK 0x010 /* kern/task.c */ #define WA_BOOT 0x020 /* bootstrap,startup.c */ #define WA_PCB 0x040 /* machine/pcb.c */ #define WA_PORT 0x080 /* ports + port sets */ #define WA_EXIT 0x100 /* exit path */ #define WA_SWITCH 0x200 /* context switch (!!) */ #define WA_STATE 0x400 /* get/set state (!!) */ #define WA_ALL (~0) #endif /* MACH_ASSERT */ #endif /* _KERN_THREAD_POOL_H_ */ |