1 {
2      File:       CarbonCore/Threads.h
3 
4      Contains:   Thread Manager Interfaces.
5                  The contents of this header file are deprecated.
6 
7      Copyright:  � 1991-2011 by Apple Inc. All rights reserved.
8 }
9 {
10     Modified for use with Free Pascal
11     Version 308
12     Please report any bugs to <gpc@microbizz.nl>
13 }
14 
15 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
16 {$mode macpas}
17 {$modeswitch cblocks}
18 {$packenum 1}
19 {$macro on}
20 {$inline on}
21 {$calling mwpascal}
22 
23 unit Threads;
24 interface
25 {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
26 {$setc GAP_INTERFACES_VERSION := $0308}
27 
28 {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
29     {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
30 {$endc}
31 
32 {$ifc defined CPUPOWERPC and defined CPUI386}
33 	{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
34 {$endc}
35 {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
36 	{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
37 {$endc}
38 
39 {$ifc not defined __ppc__ and defined CPUPOWERPC32}
40 	{$setc __ppc__ := 1}
41 {$elsec}
42 	{$setc __ppc__ := 0}
43 {$endc}
44 {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
45 	{$setc __ppc64__ := 1}
46 {$elsec}
47 	{$setc __ppc64__ := 0}
48 {$endc}
49 {$ifc not defined __i386__ and defined CPUI386}
50 	{$setc __i386__ := 1}
51 {$elsec}
52 	{$setc __i386__ := 0}
53 {$endc}
54 {$ifc not defined __x86_64__ and defined CPUX86_64}
55 	{$setc __x86_64__ := 1}
56 {$elsec}
57 	{$setc __x86_64__ := 0}
58 {$endc}
59 {$ifc not defined __arm__ and defined CPUARM}
60 	{$setc __arm__ := 1}
61 {$elsec}
62 	{$setc __arm__ := 0}
63 {$endc}
64 {$ifc not defined __arm64__ and defined CPUAARCH64}
65   {$setc __arm64__ := 1}
66 {$elsec}
67   {$setc __arm64__ := 0}
68 {$endc}
69 
70 {$ifc defined cpu64}
71   {$setc __LP64__ := 1}
72 {$elsec}
73   {$setc __LP64__ := 0}
74 {$endc}
75 
76 
77 {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
78 	{$error Conflicting definitions for __ppc__ and __i386__}
79 {$endc}
80 
81 {$ifc defined __ppc__ and __ppc__}
82 	{$setc TARGET_CPU_PPC := TRUE}
83 	{$setc TARGET_CPU_PPC64 := FALSE}
84 	{$setc TARGET_CPU_X86 := FALSE}
85 	{$setc TARGET_CPU_X86_64 := FALSE}
86 	{$setc TARGET_CPU_ARM := FALSE}
87 	{$setc TARGET_CPU_ARM64 := FALSE}
88 	{$setc TARGET_OS_MAC := TRUE}
89 	{$setc TARGET_OS_IPHONE := FALSE}
90 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
91 	{$setc TARGET_OS_EMBEDDED := FALSE}
92 {$elifc defined __ppc64__ and __ppc64__}
93 	{$setc TARGET_CPU_PPC := FALSE}
94 	{$setc TARGET_CPU_PPC64 := TRUE}
95 	{$setc TARGET_CPU_X86 := FALSE}
96 	{$setc TARGET_CPU_X86_64 := FALSE}
97 	{$setc TARGET_CPU_ARM := FALSE}
98 	{$setc TARGET_CPU_ARM64 := FALSE}
99 	{$setc TARGET_OS_MAC := TRUE}
100 	{$setc TARGET_OS_IPHONE := FALSE}
101 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
102 	{$setc TARGET_OS_EMBEDDED := FALSE}
103 {$elifc defined __i386__ and __i386__}
104 	{$setc TARGET_CPU_PPC := FALSE}
105 	{$setc TARGET_CPU_PPC64 := FALSE}
106 	{$setc TARGET_CPU_X86 := TRUE}
107 	{$setc TARGET_CPU_X86_64 := FALSE}
108 	{$setc TARGET_CPU_ARM := FALSE}
109 	{$setc TARGET_CPU_ARM64 := FALSE}
110 {$ifc defined iphonesim}
111  	{$setc TARGET_OS_MAC := FALSE}
112 	{$setc TARGET_OS_IPHONE := TRUE}
113 	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
114 {$elsec}
115 	{$setc TARGET_OS_MAC := TRUE}
116 	{$setc TARGET_OS_IPHONE := FALSE}
117 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
118 {$endc}
119 	{$setc TARGET_OS_EMBEDDED := FALSE}
120 {$elifc defined __x86_64__ and __x86_64__}
121 	{$setc TARGET_CPU_PPC := FALSE}
122 	{$setc TARGET_CPU_PPC64 := FALSE}
123 	{$setc TARGET_CPU_X86 := FALSE}
124 	{$setc TARGET_CPU_X86_64 := TRUE}
125 	{$setc TARGET_CPU_ARM := FALSE}
126 	{$setc TARGET_CPU_ARM64 := FALSE}
127 {$ifc defined iphonesim}
128  	{$setc TARGET_OS_MAC := FALSE}
129 	{$setc TARGET_OS_IPHONE := TRUE}
130 	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
131 {$elsec}
132 	{$setc TARGET_OS_MAC := TRUE}
133 	{$setc TARGET_OS_IPHONE := FALSE}
134 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
135 {$endc}
136 	{$setc TARGET_OS_EMBEDDED := FALSE}
137 {$elifc defined __arm__ and __arm__}
138 	{$setc TARGET_CPU_PPC := FALSE}
139 	{$setc TARGET_CPU_PPC64 := FALSE}
140 	{$setc TARGET_CPU_X86 := FALSE}
141 	{$setc TARGET_CPU_X86_64 := FALSE}
142 	{$setc TARGET_CPU_ARM := TRUE}
143 	{$setc TARGET_CPU_ARM64 := FALSE}
144 	{$setc TARGET_OS_MAC := FALSE}
145 	{$setc TARGET_OS_IPHONE := TRUE}
146 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
147 	{$setc TARGET_OS_EMBEDDED := TRUE}
148 {$elifc defined __arm64__ and __arm64__}
149 	{$setc TARGET_CPU_PPC := FALSE}
150 	{$setc TARGET_CPU_PPC64 := FALSE}
151 	{$setc TARGET_CPU_X86 := FALSE}
152 	{$setc TARGET_CPU_X86_64 := FALSE}
153 	{$setc TARGET_CPU_ARM := FALSE}
154 	{$setc TARGET_CPU_ARM64 := TRUE}
155 {$ifc defined ios}
156 	{$setc TARGET_OS_MAC := FALSE}
157 	{$setc TARGET_OS_IPHONE := TRUE}
158 	{$setc TARGET_OS_EMBEDDED := TRUE}
159 {$elsec}
160 	{$setc TARGET_OS_MAC := TRUE}
161 	{$setc TARGET_OS_IPHONE := FALSE}
162 	{$setc TARGET_OS_EMBEDDED := FALSE}
163 {$endc}
164 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
165 {$elsec}
166 	{$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
167 {$endc}
168 
169 {$ifc defined __LP64__ and __LP64__ }
170   {$setc TARGET_CPU_64 := TRUE}
171 {$elsec}
172   {$setc TARGET_CPU_64 := FALSE}
173 {$endc}
174 
175 {$ifc defined FPC_BIG_ENDIAN}
176 	{$setc TARGET_RT_BIG_ENDIAN := TRUE}
177 	{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
178 {$elifc defined FPC_LITTLE_ENDIAN}
179 	{$setc TARGET_RT_BIG_ENDIAN := FALSE}
180 	{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
181 {$elsec}
182 	{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
183 {$endc}
184 {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
185 {$setc CALL_NOT_IN_CARBON := FALSE}
186 {$setc OLDROUTINENAMES := FALSE}
187 {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
188 {$setc OPAQUE_UPP_TYPES := TRUE}
189 {$setc OTCARBONAPPLICATION := TRUE}
190 {$setc OTKERNEL := FALSE}
191 {$setc PM_USE_SESSION_APIS := TRUE}
192 {$setc TARGET_API_MAC_CARBON := TRUE}
193 {$setc TARGET_API_MAC_OS8 := FALSE}
194 {$setc TARGET_API_MAC_OSX := TRUE}
195 {$setc TARGET_CARBON := TRUE}
196 {$setc TARGET_CPU_68K := FALSE}
197 {$setc TARGET_CPU_MIPS := FALSE}
198 {$setc TARGET_CPU_SPARC := FALSE}
199 {$setc TARGET_OS_UNIX := FALSE}
200 {$setc TARGET_OS_WIN32 := FALSE}
201 {$setc TARGET_RT_MAC_68881 := FALSE}
202 {$setc TARGET_RT_MAC_CFM := FALSE}
203 {$setc TARGET_RT_MAC_MACHO := TRUE}
204 {$setc TYPED_FUNCTION_POINTERS := TRUE}
205 {$setc TYPE_BOOL := FALSE}
206 {$setc TYPE_EXTENDED := FALSE}
207 {$setc TYPE_LONGLONG := TRUE}
208 uses MacTypes;
209 {$endc} {not MACOSALLINCLUDE}
210 
211 
212 {$ifc TARGET_OS_MAC}
213 
214 {$ALIGN MAC68K}
215 
216 {********************************************************************************************
217 
218  The Thread Manager is deprecated.  Callers should use blocks, libDispatch, or pthreads.
219 
220  No exact replacement exists for the 'cooperative' threads model, but converting all of the
221  former work done in cooperative threads into blocks and scheduling them on the same serial
222  dispatch queue ( or the main queue ) is essentially the same.
223 
224 ********************************************************************************************}
225 
226 { Thread states}
227 type
228 	ThreadState = UInt16;
229 const
230 	kReadyThreadState = 0;
231 	kStoppedThreadState = 1;
232 	kRunningThreadState = 2;
233 
234 { Error codes have been moved to Errors.(pah)}
235 
236 { Thread environment characteristics}
237 type
238 	ThreadTaskRef = UnivPtr;
239 { Thread characteristics}
240 type
241 	ThreadStyle = UInt32;
242 const
243 	kCooperativeThread = 1 shl 0;
244 	kPreemptiveThread = 1 shl 1;
245 
246 { Thread identifiers}
247 type
248 	ThreadID = UNSIGNEDLONG;
249 const
250 	kNoThreadID = 0;
251 	kCurrentThreadID = 1;
252 	kApplicationThreadID = 2;
253 
254 { Options when creating a thread}
255 type
256 	ThreadOptions = UInt32;
257 const
258 	kNewSuspend = 1 shl 0;
259 	kUsePremadeThread = 1 shl 1;
260 	kCreateIfNeeded = 1 shl 2;
261 	kFPUNotNeeded = 1 shl 3;
262 	kExactMatchThread = 1 shl 4;
263 
264 { Information supplied to the custom scheduler}
265 type
266 	SchedulerInfoRec = record
267 		InfoRecSize: UInt32;
268 		CurrentThreadID: ThreadID;
269 		SuggestedThreadID: ThreadID;
270 		InterruptedCoopThreadID: ThreadID;
271 	end;
272 	SchedulerInfoRecPtr = ^SchedulerInfoRec;
273 
274 {
275     The following ProcPtrs cannot be interchanged with UniversalProcPtrs because
276     of differences between 680x0 and PowerPC runtime architectures with regard to
277     the implementation of the Thread Manager.
278  }
279 type
280 	voidPtr = UnivPtr;
281 { Prototype for thread's entry (main) routine}
282 type
threadParamnull283 	ThreadEntryProcPtr = function( threadParam: UnivPtr ): voidPtr;
284 { Prototype for custom thread scheduler routine}
285 type
schedulerInfonull286 	ThreadSchedulerProcPtr = function( schedulerInfo: SchedulerInfoRecPtr ): ThreadID;
287 { Prototype for custom thread switcher routine}
288 type
289 	ThreadSwitchProcPtr = procedure( threadBeingSwitched: ThreadID; switchProcParam: UnivPtr );
290 { Prototype for thread termination notification routine}
291 type
292 	ThreadTerminationProcPtr = procedure( threadTerminated: ThreadID; terminationProcParam: UnivPtr );
293 { Prototype for debugger NewThread notification}
294 type
295 	DebuggerNewThreadProcPtr = procedure( threadCreated: ThreadID );
296 { Prototype for debugger DisposeThread notification}
297 type
298 	DebuggerDisposeThreadProcPtr = procedure( threadDeleted: ThreadID );
299 { Prototype for debugger schedule notification}
300 type
schedulerInfonull301 	DebuggerThreadSchedulerProcPtr = function( schedulerInfo: SchedulerInfoRecPtr ): ThreadID;
302 type
303 	ThreadEntryUPP = ThreadEntryProcPtr;
304 	ThreadSchedulerUPP = ThreadSchedulerProcPtr;
305 	ThreadSwitchUPP = ThreadSwitchProcPtr;
306 	ThreadTerminationUPP = ThreadTerminationProcPtr;
307 	DebuggerNewThreadUPP = DebuggerNewThreadProcPtr;
308 	DebuggerDisposeThreadUPP = DebuggerDisposeThreadProcPtr;
309 	DebuggerThreadSchedulerUPP = DebuggerThreadSchedulerProcPtr;
310 {
311  *  NewThreadEntryUPP()
312  *
313  *  Availability:
314  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
315  *    CarbonLib:        in CarbonLib 1.0 and later
316  *    Non-Carbon CFM:   available as macro/inline
317  }
NewThreadEntryUPPnull318 function NewThreadEntryUPP( userRoutine: ThreadEntryProcPtr ): ThreadEntryUPP; external name '_NewThreadEntryUPP';
319 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
320 
321 {
322  *  NewThreadSchedulerUPP()
323  *
324  *  Availability:
325  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
326  *    CarbonLib:        in CarbonLib 1.0 and later
327  *    Non-Carbon CFM:   available as macro/inline
328  }
NewThreadSchedulerUPPnull329 function NewThreadSchedulerUPP( userRoutine: ThreadSchedulerProcPtr ): ThreadSchedulerUPP; external name '_NewThreadSchedulerUPP';
330 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
331 
332 {
333  *  NewThreadSwitchUPP()
334  *
335  *  Availability:
336  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
337  *    CarbonLib:        in CarbonLib 1.0 and later
338  *    Non-Carbon CFM:   available as macro/inline
339  }
NewThreadSwitchUPPnull340 function NewThreadSwitchUPP( userRoutine: ThreadSwitchProcPtr ): ThreadSwitchUPP; external name '_NewThreadSwitchUPP';
341 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
342 
343 {
344  *  NewThreadTerminationUPP()
345  *
346  *  Availability:
347  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
348  *    CarbonLib:        in CarbonLib 1.0 and later
349  *    Non-Carbon CFM:   available as macro/inline
350  }
NewThreadTerminationUPPnull351 function NewThreadTerminationUPP( userRoutine: ThreadTerminationProcPtr ): ThreadTerminationUPP; external name '_NewThreadTerminationUPP';
352 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
353 
354 {
355  *  NewDebuggerNewThreadUPP()
356  *
357  *  Availability:
358  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
359  *    CarbonLib:        in CarbonLib 1.0 and later
360  *    Non-Carbon CFM:   available as macro/inline
361  }
NewDebuggerNewThreadUPPnull362 function NewDebuggerNewThreadUPP( userRoutine: DebuggerNewThreadProcPtr ): DebuggerNewThreadUPP; external name '_NewDebuggerNewThreadUPP';
363 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
364 
365 {
366  *  NewDebuggerDisposeThreadUPP()
367  *
368  *  Availability:
369  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
370  *    CarbonLib:        in CarbonLib 1.0 and later
371  *    Non-Carbon CFM:   available as macro/inline
372  }
NewDebuggerDisposeThreadUPPnull373 function NewDebuggerDisposeThreadUPP( userRoutine: DebuggerDisposeThreadProcPtr ): DebuggerDisposeThreadUPP; external name '_NewDebuggerDisposeThreadUPP';
374 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
375 
376 {
377  *  NewDebuggerThreadSchedulerUPP()
378  *
379  *  Availability:
380  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
381  *    CarbonLib:        in CarbonLib 1.0 and later
382  *    Non-Carbon CFM:   available as macro/inline
383  }
NewDebuggerThreadSchedulerUPPnull384 function NewDebuggerThreadSchedulerUPP( userRoutine: DebuggerThreadSchedulerProcPtr ): DebuggerThreadSchedulerUPP; external name '_NewDebuggerThreadSchedulerUPP';
385 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
386 
387 {
388  *  DisposeThreadEntryUPP()
389  *
390  *  Availability:
391  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
392  *    CarbonLib:        in CarbonLib 1.0 and later
393  *    Non-Carbon CFM:   available as macro/inline
394  }
395 procedure DisposeThreadEntryUPP( userUPP: ThreadEntryUPP ); external name '_DisposeThreadEntryUPP';
396 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
397 
398 {
399  *  DisposeThreadSchedulerUPP()
400  *
401  *  Availability:
402  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
403  *    CarbonLib:        in CarbonLib 1.0 and later
404  *    Non-Carbon CFM:   available as macro/inline
405  }
406 procedure DisposeThreadSchedulerUPP( userUPP: ThreadSchedulerUPP ); external name '_DisposeThreadSchedulerUPP';
407 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
408 
409 {
410  *  DisposeThreadSwitchUPP()
411  *
412  *  Availability:
413  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
414  *    CarbonLib:        in CarbonLib 1.0 and later
415  *    Non-Carbon CFM:   available as macro/inline
416  }
417 procedure DisposeThreadSwitchUPP( userUPP: ThreadSwitchUPP ); external name '_DisposeThreadSwitchUPP';
418 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
419 
420 {
421  *  DisposeThreadTerminationUPP()
422  *
423  *  Availability:
424  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
425  *    CarbonLib:        in CarbonLib 1.0 and later
426  *    Non-Carbon CFM:   available as macro/inline
427  }
428 procedure DisposeThreadTerminationUPP( userUPP: ThreadTerminationUPP ); external name '_DisposeThreadTerminationUPP';
429 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
430 
431 {
432  *  DisposeDebuggerNewThreadUPP()
433  *
434  *  Availability:
435  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
436  *    CarbonLib:        in CarbonLib 1.0 and later
437  *    Non-Carbon CFM:   available as macro/inline
438  }
439 procedure DisposeDebuggerNewThreadUPP( userUPP: DebuggerNewThreadUPP ); external name '_DisposeDebuggerNewThreadUPP';
440 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
441 
442 {
443  *  DisposeDebuggerDisposeThreadUPP()
444  *
445  *  Availability:
446  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
447  *    CarbonLib:        in CarbonLib 1.0 and later
448  *    Non-Carbon CFM:   available as macro/inline
449  }
450 procedure DisposeDebuggerDisposeThreadUPP( userUPP: DebuggerDisposeThreadUPP ); external name '_DisposeDebuggerDisposeThreadUPP';
451 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
452 
453 {
454  *  DisposeDebuggerThreadSchedulerUPP()
455  *
456  *  Availability:
457  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
458  *    CarbonLib:        in CarbonLib 1.0 and later
459  *    Non-Carbon CFM:   available as macro/inline
460  }
461 procedure DisposeDebuggerThreadSchedulerUPP( userUPP: DebuggerThreadSchedulerUPP ); external name '_DisposeDebuggerThreadSchedulerUPP';
462 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
463 
464 {
465  *  InvokeThreadEntryUPP()
466  *
467  *  Availability:
468  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
469  *    CarbonLib:        in CarbonLib 1.0 and later
470  *    Non-Carbon CFM:   available as macro/inline
471  }
InvokeThreadEntryUPPnull472 function InvokeThreadEntryUPP( threadParam: UnivPtr; userUPP: ThreadEntryUPP ): voidPtr; external name '_InvokeThreadEntryUPP';
473 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
474 
475 {
476  *  InvokeThreadSchedulerUPP()
477  *
478  *  Availability:
479  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
480  *    CarbonLib:        in CarbonLib 1.0 and later
481  *    Non-Carbon CFM:   available as macro/inline
482  }
InvokeThreadSchedulerUPPnull483 function InvokeThreadSchedulerUPP( schedulerInfo: SchedulerInfoRecPtr; userUPP: ThreadSchedulerUPP ): ThreadID; external name '_InvokeThreadSchedulerUPP';
484 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
485 
486 {
487  *  InvokeThreadSwitchUPP()
488  *
489  *  Availability:
490  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
491  *    CarbonLib:        in CarbonLib 1.0 and later
492  *    Non-Carbon CFM:   available as macro/inline
493  }
494 procedure InvokeThreadSwitchUPP( threadBeingSwitched: ThreadID; switchProcParam: UnivPtr; userUPP: ThreadSwitchUPP ); external name '_InvokeThreadSwitchUPP';
495 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
496 
497 {
498  *  InvokeThreadTerminationUPP()
499  *
500  *  Availability:
501  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
502  *    CarbonLib:        in CarbonLib 1.0 and later
503  *    Non-Carbon CFM:   available as macro/inline
504  }
505 procedure InvokeThreadTerminationUPP( threadTerminated: ThreadID; terminationProcParam: UnivPtr; userUPP: ThreadTerminationUPP ); external name '_InvokeThreadTerminationUPP';
506 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
507 
508 {
509  *  InvokeDebuggerNewThreadUPP()
510  *
511  *  Availability:
512  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
513  *    CarbonLib:        in CarbonLib 1.0 and later
514  *    Non-Carbon CFM:   available as macro/inline
515  }
516 procedure InvokeDebuggerNewThreadUPP( threadCreated: ThreadID; userUPP: DebuggerNewThreadUPP ); external name '_InvokeDebuggerNewThreadUPP';
517 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
518 
519 {
520  *  InvokeDebuggerDisposeThreadUPP()
521  *
522  *  Availability:
523  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
524  *    CarbonLib:        in CarbonLib 1.0 and later
525  *    Non-Carbon CFM:   available as macro/inline
526  }
527 procedure InvokeDebuggerDisposeThreadUPP( threadDeleted: ThreadID; userUPP: DebuggerDisposeThreadUPP ); external name '_InvokeDebuggerDisposeThreadUPP';
528 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
529 
530 {
531  *  InvokeDebuggerThreadSchedulerUPP()
532  *
533  *  Availability:
534  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
535  *    CarbonLib:        in CarbonLib 1.0 and later
536  *    Non-Carbon CFM:   available as macro/inline
537  }
InvokeDebuggerThreadSchedulerUPPnull538 function InvokeDebuggerThreadSchedulerUPP( schedulerInfo: SchedulerInfoRecPtr; userUPP: DebuggerThreadSchedulerUPP ): ThreadID; external name '_InvokeDebuggerThreadSchedulerUPP';
539 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
540 
541 {
542    Thread Manager function pointers (TPP):
543    on classic 68k use raw function pointers (same as UPP's)
544    on classic PowerPC, use raw function pointers
545    on classic PowerPC with OPAQUE_UPP_TYPES=1, use UPP's
546    on CFM-68K, use UPP's
547    on Carbon, use UPP's
548 }
549 
550 { use UPP's}
551 type
552 	ThreadEntryTPP = ThreadEntryUPP;
553 	ThreadSchedulerTPP = ThreadSchedulerUPP;
554 	ThreadSwitchTPP = ThreadSwitchUPP;
555 	ThreadTerminationTPP = ThreadTerminationUPP;
556 	DebuggerNewThreadTPP = DebuggerNewThreadUPP;
557 	DebuggerDisposeThreadTPP = DebuggerDisposeThreadUPP;
558 	DebuggerThreadSchedulerTPP = DebuggerThreadSchedulerUPP;
559 {
560  *  NewThread()   *** DEPRECATED ***
561  *
562  *  Availability:
563  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
564  *    CarbonLib:        in CarbonLib 1.0 and later
565  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
566  }
NewThreadnull567 function NewThread( threadStyle_: ThreadStyle; threadEntry: ThreadEntryTPP; threadParam: UnivPtr; stackSize: Size; options: ThreadOptions; threadResult: UnivPtrPtr { can be NULL }; var threadMade: ThreadID ): OSErr; external name '_NewThread';
568 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
569 
570 
571 {
572  *  SetThreadScheduler()   *** DEPRECATED ***
573  *
574  *  Availability:
575  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
576  *    CarbonLib:        in CarbonLib 1.0 and later
577  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
578  }
SetThreadSchedulernull579 function SetThreadScheduler( threadScheduler: ThreadSchedulerTPP ): OSErr; external name '_SetThreadScheduler';
580 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
581 
582 
583 {
584  *  SetThreadSwitcher()   *** DEPRECATED ***
585  *
586  *  Availability:
587  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
588  *    CarbonLib:        in CarbonLib 1.0 and later
589  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
590  }
SetThreadSwitchernull591 function SetThreadSwitcher( thread: ThreadID; threadSwitcher: ThreadSwitchTPP; switchProcParam: UnivPtr; inOrOut: Boolean ): OSErr; external name '_SetThreadSwitcher';
592 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
593 
594 
595 {
596  *  SetThreadTerminator()   *** DEPRECATED ***
597  *
598  *  Availability:
599  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
600  *    CarbonLib:        in CarbonLib 1.0 and later
601  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
602  }
SetThreadTerminatornull603 function SetThreadTerminator( thread: ThreadID; threadTerminator: ThreadTerminationTPP; terminationProcParam: UnivPtr ): OSErr; external name '_SetThreadTerminator';
604 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
605 
606 
607 {
608  *  SetDebuggerNotificationProcs()   *** DEPRECATED ***
609  *
610  *  Availability:
611  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
612  *    CarbonLib:        in CarbonLib 1.0 and later
613  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
614  }
SetDebuggerNotificationProcsnull615 function SetDebuggerNotificationProcs( notifyNewThread: DebuggerNewThreadTPP; notifyDisposeThread: DebuggerDisposeThreadTPP; notifyThreadScheduler: DebuggerThreadSchedulerTPP ): OSErr; external name '_SetDebuggerNotificationProcs';
616 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
617 
618 
619 {
620  *  CreateThreadPool()   *** DEPRECATED ***
621  *
622  *  Availability:
623  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
624  *    CarbonLib:        in CarbonLib 1.0 and later
625  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
626  }
CreateThreadPoolnull627 function CreateThreadPool( threadStyle_: ThreadStyle; numToCreate: SInt16; stackSize: Size ): OSErr; external name '_CreateThreadPool';
628 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
629 
630 
631 {
632  *  GetDefaultThreadStackSize()   *** DEPRECATED ***
633  *
634  *  Availability:
635  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
636  *    CarbonLib:        in CarbonLib 1.0 and later
637  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
638  }
GetDefaultThreadStackSizenull639 function GetDefaultThreadStackSize( threadStyle_: ThreadStyle; var stackSize: Size ): OSErr; external name '_GetDefaultThreadStackSize';
640 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
641 
642 
643 {
644  *  ThreadCurrentStackSpace()   *** DEPRECATED ***
645  *
646  *  Availability:
647  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
648  *    CarbonLib:        in CarbonLib 1.0 and later
649  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
650  }
ThreadCurrentStackSpacenull651 function ThreadCurrentStackSpace( thread: ThreadID; var freeStack: ByteCount ): OSErr; external name '_ThreadCurrentStackSpace';
652 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
653 
654 
655 {
656  *  DisposeThread()   *** DEPRECATED ***
657  *
658  *  Availability:
659  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
660  *    CarbonLib:        in CarbonLib 1.0 and later
661  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
662  }
DisposeThreadnull663 function DisposeThread( threadToDump: ThreadID; threadResult: UnivPtr; recycleThread: Boolean ): OSErr; external name '_DisposeThread';
664 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
665 
666 
667 {
668  *  YieldToThread()   *** DEPRECATED ***
669  *
670  *  Availability:
671  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
672  *    CarbonLib:        in CarbonLib 1.0 and later
673  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
674  }
YieldToThreadnull675 function YieldToThread( suggestedThread: ThreadID ): OSErr; external name '_YieldToThread';
676 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
677 
678 
679 {
680  *  YieldToAnyThread()   *** DEPRECATED ***
681  *
682  *  Availability:
683  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
684  *    CarbonLib:        in CarbonLib 1.0 and later
685  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
686  }
YieldToAnyThreadnull687 function YieldToAnyThread: OSErr; external name '_YieldToAnyThread';
688 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
689 
690 
691 {
692  *  [Mac]GetCurrentThread()   *** DEPRECATED ***
693  *
694  *  Availability:
695  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
696  *    CarbonLib:        in CarbonLib 1.0 and later
697  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
698  }
GetCurrentThreadnull699 function GetCurrentThread( var currentThreadID: ThreadID ): OSErr; external name '_GetCurrentThread';
700 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
MacGetCurrentThreadnull701 function MacGetCurrentThread( var currentThreadID: ThreadID ): OSErr; external name '_GetCurrentThread';
702 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
703 
704 
705 {
706  *  GetThreadState()   *** DEPRECATED ***
707  *
708  *  Availability:
709  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
710  *    CarbonLib:        in CarbonLib 1.0 and later
711  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
712  }
GetThreadStatenull713 function GetThreadState( threadToGet: ThreadID; var threadState_: ThreadState ): OSErr; external name '_GetThreadState';
714 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
715 
716 
717 {
718  *  SetThreadState()   *** DEPRECATED ***
719  *
720  *  Availability:
721  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
722  *    CarbonLib:        in CarbonLib 1.0 and later
723  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
724  }
SetThreadStatenull725 function SetThreadState( threadToSet: ThreadID; newState: ThreadState; suggestedThread: ThreadID ): OSErr; external name '_SetThreadState';
726 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
727 
728 
729 {
730  *  SetThreadStateEndCritical()   *** DEPRECATED ***
731  *
732  *  Availability:
733  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
734  *    CarbonLib:        in CarbonLib 1.0 and later
735  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
736  }
SetThreadStateEndCriticalnull737 function SetThreadStateEndCritical( threadToSet: ThreadID; newState: ThreadState; suggestedThread: ThreadID ): OSErr; external name '_SetThreadStateEndCritical';
738 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
739 
740 
741 {
742  *  ThreadBeginCritical()   *** DEPRECATED ***
743  *
744  *  Availability:
745  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
746  *    CarbonLib:        in CarbonLib 1.0 and later
747  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
748  }
ThreadBeginCriticalnull749 function ThreadBeginCritical: OSErr; external name '_ThreadBeginCritical';
750 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
751 
752 
753 {
754  *  ThreadEndCritical()   *** DEPRECATED ***
755  *
756  *  Availability:
757  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
758  *    CarbonLib:        in CarbonLib 1.0 and later
759  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
760  }
ThreadEndCriticalnull761 function ThreadEndCritical: OSErr; external name '_ThreadEndCritical';
762 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
763 
764 
765 {
766  *  GetThreadCurrentTaskRef()   *** DEPRECATED ***
767  *
768  *  Availability:
769  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
770  *    CarbonLib:        in CarbonLib 1.0 and later
771  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
772  }
GetThreadCurrentTaskRefnull773 function GetThreadCurrentTaskRef( var threadTRef: ThreadTaskRef ): OSErr; external name '_GetThreadCurrentTaskRef';
774 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
775 
776 
777 {
778  *  GetThreadStateGivenTaskRef()   *** DEPRECATED ***
779  *
780  *  Availability:
781  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
782  *    CarbonLib:        in CarbonLib 1.0 and later
783  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
784  }
GetThreadStateGivenTaskRefnull785 function GetThreadStateGivenTaskRef( threadTRef: ThreadTaskRef; threadToGet: ThreadID; var threadState_: ThreadState ): OSErr; external name '_GetThreadStateGivenTaskRef';
786 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
787 
788 
789 {
790  *  SetThreadReadyGivenTaskRef()   *** DEPRECATED ***
791  *
792  *  Availability:
793  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.7
794  *    CarbonLib:        in CarbonLib 1.0 and later
795  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
796  }
SetThreadReadyGivenTaskRefnull797 function SetThreadReadyGivenTaskRef( threadTRef: ThreadTaskRef; threadToSet: ThreadID ): OSErr; external name '_SetThreadReadyGivenTaskRef';
798 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_NA, __IPHONE_NA) *)
799 
800 
801 {$ifc not TARGET_CPU_64}
802 { This routine was never implemented on Mac OS X.}
803 {
804  *  GetFreeThreadCount()   *** DEPRECATED ***
805  *
806  *  Availability:
807  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.3
808  *    CarbonLib:        in CarbonLib 1.0 and later
809  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
810  }
GetFreeThreadCountnull811 function GetFreeThreadCount( threadStyle_: ThreadStyle; var freeCount: SInt16 ): OSErr; external name '_GetFreeThreadCount';
812 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_3, __IPHONE_NA, __IPHONE_NA) *)
813 
814 
815 { This routine was never implemented on Mac OS X.}
816 {
817  *  GetSpecificFreeThreadCount()   *** DEPRECATED ***
818  *
819  *  Availability:
820  *    Mac OS X:         in version 10.0 and later in CoreServices.framework but deprecated in 10.3
821  *    CarbonLib:        in CarbonLib 1.0 and later
822  *    Non-Carbon CFM:   in ThreadsLib 1.0 and later
823  }
GetSpecificFreeThreadCountnull824 function GetSpecificFreeThreadCount( threadStyle_: ThreadStyle; stackSize: Size; var freeCount: SInt16 ): OSErr; external name '_GetSpecificFreeThreadCount';
825 (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_3, __IPHONE_NA, __IPHONE_NA) *)
826 
827 
828 {$endc} {not TARGET_CPU_64}
829 
830 {$endc} {TARGET_OS_MAC}
831 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
832 
833 end.
834 {$endc} {not MACOSALLINCLUDE}
835