]>
Commit | Line | Data |
---|---|---|
1c79356b A |
1 | /* |
2 | * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. | |
3 | * | |
4 | * @APPLE_LICENSE_HEADER_START@ | |
5 | * | |
6 | * The contents of this file constitute Original Code as defined in and | |
7 | * are subject to the Apple Public Source License Version 1.1 (the | |
8 | * "License"). You may not use this file except in compliance with the | |
9 | * License. Please obtain a copy of the License at | |
10 | * http://www.apple.com/publicsource and read it before using this file. | |
11 | * | |
12 | * This Original Code and all software distributed under the License are | |
13 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
14 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
15 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
16 | * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the | |
17 | * License for the specific language governing rights and limitations | |
18 | * under the License. | |
19 | * | |
20 | * @APPLE_LICENSE_HEADER_END@ | |
21 | */ | |
22 | /* | |
23 | * @OSF_COPYRIGHT@ | |
24 | */ | |
25 | /* | |
26 | * Mach Operating System | |
27 | * Copyright (c) 1989 Carnegie-Mellon University | |
28 | * Copyright (c) 1988 Carnegie-Mellon University | |
29 | * Copyright (c) 1987 Carnegie-Mellon University | |
30 | * All rights reserved. The CMU software License Agreement specifies | |
31 | * the terms and conditions for use and redistribution. | |
32 | */ | |
33 | /* | |
34 | * HISTORY | |
35 | * | |
36 | * Revision 1.1.1.1 1998/09/22 21:05:32 wsanchez | |
37 | * Import of Mac OS X kernel (~semeria) | |
38 | * | |
39 | * Revision 1.1.1.1 1998/03/07 02:25:57 wsanchez | |
40 | * Import of OSF Mach kernel (~mburg) | |
41 | * | |
42 | * Revision 1.1.11.7 1995/06/13 18:58:49 bolinger | |
43 | * Fix ri-osc CR1391: New return type from thread_swapin_blocking(). | |
44 | * [1995/06/13 18:56:52 bolinger] | |
45 | * | |
46 | * Revision 1.1.11.6 1995/06/05 21:46:36 dwm | |
47 | * ri-osc CR1357 - ensure activation being returned to is swapped in. | |
48 | * added thread_swapin_blocking [bolinger] | |
49 | * [1995/06/05 21:34:08 dwm] | |
50 | * | |
51 | * Revision 1.1.11.5 1995/05/19 15:48:34 bernadat | |
52 | * Let thread swapping be configurable. | |
53 | * [95/05/19 bernadat] | |
54 | * | |
55 | * Revision 1.1.11.4 1995/04/07 19:04:46 barbou | |
56 | * Merged into mainline. | |
57 | * [95/03/09 barbou] | |
58 | * | |
59 | * Revision 1.1.12.2 1995/02/13 15:59:18 barbou | |
60 | * Merged/ported to MK6. | |
61 | * | |
62 | * Revision 1.1.9.3 1994/08/12 14:22:30 barbou | |
63 | * Overwritten with copy from IK. | |
64 | * Old kern/thread_swap.h was renamed kern/thread_handoff.c. | |
65 | * Added prototype for thread_swapout and thread_swapout_enqueue. | |
66 | * [94/07/28 barbou] | |
67 | * | |
68 | * Revision 3.0.3.2 1994/01/20 19:53:20 chasb | |
69 | * Remove excessively restrictive copyright notice | |
70 | * [1994/01/20 17:50:56 chasb] | |
71 | * | |
72 | * Revision 3.0.3.1 1993/12/20 21:07:59 gupta | |
73 | * Expanded C O P Y R I G H T | |
74 | * [1993/12/17 22:19:43 gupta] | |
75 | * | |
76 | * Revision 3.0 1992/12/31 22:08:45 ede | |
77 | * Initial revision for OSF/1 R1.3 | |
78 | * | |
79 | * Revision 1.6.2.2 1992/01/22 22:14:42 gmf | |
80 | * Added TH_SW_TASK_SWAPPING flag to swap_state. This state | |
81 | * indicates that the thread is about to be swapped out by | |
82 | * the task swapping mechanism, and prevents the thread | |
83 | * swapper from doing it first. | |
84 | * [1992/01/20 22:06:36 gmf] | |
85 | * | |
86 | * Revision 1.6 1991/08/15 19:16:39 devrcs | |
87 | * Prototype all functions, change name to thread_swapper_init. | |
88 | * [91/06/26 10:45:44 jeffc] | |
89 | * | |
90 | * Revision 1.5 91/06/10 16:19:07 devrcs | |
91 | * Additions to allow thread to be made non-swappable on swap in, | |
92 | * change thread_swapin interface. | |
93 | * [91/05/30 15:56:38 jeffc] | |
94 | * | |
95 | * Revision 1.4 91/03/04 17:07:14 devrcs | |
96 | * A small step toward ansiC: commented else/endif/elif trailers. | |
97 | * [91/01/12 16:39:43 dwm] | |
98 | * | |
99 | * Revision 1.3 90/10/07 13:57:13 devrcs | |
100 | * Added EndLog Marker. | |
101 | * [90/09/28 09:59:56 gm] | |
102 | * | |
103 | * Revision 1.2 90/01/02 20:06:28 gm | |
104 | * Fixes for first snapshot. | |
105 | * | |
106 | * Revision 1.1 89/10/16 19:36:28 gm | |
107 | * Mach 2.5 and Encore 0.6 merge | |
108 | * | |
109 | * Revision 2.4 89/03/09 20:17:07 rpd | |
110 | * More cleanup. | |
111 | * | |
112 | * Revision 2.3 89/02/25 18:10:24 gm0w | |
113 | * Kernel code cleanup. | |
114 | * Put entire file under #indef KERNEL. | |
115 | * [89/02/15 mrt] | |
116 | * | |
117 | * Revision 0.0 88/01/21 dbg | |
118 | * Created. | |
119 | * [88/01/21 dbg] | |
120 | * | |
121 | * $EndLog$ | |
122 | */ | |
123 | /* | |
124 | * File: kern/thread_swap.h | |
125 | * | |
126 | * Declarations of thread swap_states and swapping routines. | |
127 | */ | |
128 | ||
129 | /* | |
130 | * Swap states for threads. | |
131 | */ | |
132 | ||
133 | #ifndef _KERN_THREAD_SWAP_H_ | |
134 | #define _KERN_THREAD_SWAP_H_ | |
135 | ||
136 | #if 1 /* USED CODE */ | |
137 | ||
138 | /* | |
139 | * exported routines | |
140 | */ | |
141 | ||
142 | extern void swapper_init(); | |
143 | extern void thread_swapin(thread_t thread); | |
144 | extern void thread_doswapin(thread_t thread); | |
145 | extern void swapin_thread(); | |
146 | ||
147 | #define thread_swappable(act, bool) | |
148 | ||
149 | ||
150 | #else /* UNUSED SWAPPER CODE */ | |
151 | #if THREAD_SWAPPER | |
152 | #define TH_SW_STATE 7 /* mask of swap state bits */ | |
153 | #define TH_SW_UNSWAPPABLE 1 /* not swappable */ | |
154 | #define TH_SW_IN 2 /* swapped in */ | |
155 | #define TH_SW_GOING_OUT 3 /* being swapped out */ | |
156 | #define TH_SW_WANT_IN 4 /* being swapped out, but should | |
157 | immediately be swapped in */ | |
158 | #define TH_SW_OUT 5 /* swapped out */ | |
159 | #define TH_SW_COMING_IN 6 /* queued for swapin, or being | |
160 | swapped in */ | |
161 | ||
162 | #define TH_SW_MAKE_UNSWAPPABLE 8 /*not state, command to swapin_thread */ | |
163 | ||
164 | /* | |
165 | * This flag is only used by the task swapper. It implies that | |
166 | * the thread is about to be swapped, but hasn't yet. | |
167 | */ | |
168 | #define TH_SW_TASK_SWAPPING 0x10 | |
169 | ||
170 | /* | |
171 | * exported routines | |
172 | */ | |
173 | extern void thread_swapper_init(void); | |
174 | extern void swapin_thread(void); | |
175 | extern void swapout_thread(void); | |
176 | extern void thread_doswapin(thread_act_t thr_act); | |
177 | extern void thread_swapin(thread_act_t thr_act, | |
178 | boolean_t make_unswappable); | |
179 | extern boolean_t | |
180 | thread_swapin_blocking(thread_act_t thr_act); | |
181 | extern void thread_swapout(thread_act_t thr_act); | |
182 | extern void swapout_threads(boolean_t now); | |
183 | extern void thread_swapout_enqueue(thread_act_t thr_act); | |
184 | extern void thread_swap_disable(thread_act_t thr_act); | |
185 | ||
186 | extern void thread_swappable(thread_act_t thr_act, boolean_t swappable); | |
187 | ||
188 | #else /* THREAD_SWAPPER */ | |
189 | #define thread_swappable(thr_act, swappable) | |
190 | #endif /* THREAD_SWAPPER */ | |
191 | ||
192 | #endif /* UNUSED SWAPPER CODE */ | |
193 | ||
194 | #endif /*_KERN_THREAD_SWAP_H_*/ | |
195 |