|
|
1.1 root 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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.