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