2
File: CarbonCore/Threads.h
4
Contains: Thread Manager Interfaces.
6
Version: CarbonCore-654.0.85~1
8
Copyright: � 1991-2005 by Apple Computer, Inc., all rights reserved.
10
Bugs?: For bug reports, consult the following page on
13
http://www.freepascal.org/bugs.html
16
{ Pascal Translation Updated: Peter N Lewis, <peter@stairways.com.au>, November 2005 }
18
Modified for use with Free Pascal
20
Please report any bugs to <gpc@microbizz.nl>
31
{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
32
{$setc GAP_INTERFACES_VERSION := $0200}
34
{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
35
{$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
38
{$ifc defined CPUPOWERPC and defined CPUI386}
39
{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
41
{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
42
{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
45
{$ifc not defined __ppc__ and defined CPUPOWERPC}
50
{$ifc not defined __i386__ and defined CPUI386}
56
{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
57
{$error Conflicting definitions for __ppc__ and __i386__}
60
{$ifc defined __ppc__ and __ppc__}
61
{$setc TARGET_CPU_PPC := TRUE}
62
{$setc TARGET_CPU_X86 := FALSE}
63
{$elifc defined __i386__ and __i386__}
64
{$setc TARGET_CPU_PPC := FALSE}
65
{$setc TARGET_CPU_X86 := TRUE}
67
{$error Neither __ppc__ nor __i386__ is defined.}
69
{$setc TARGET_CPU_PPC_64 := FALSE}
71
{$ifc defined FPC_BIG_ENDIAN}
72
{$setc TARGET_RT_BIG_ENDIAN := TRUE}
73
{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
74
{$elifc defined FPC_LITTLE_ENDIAN}
75
{$setc TARGET_RT_BIG_ENDIAN := FALSE}
76
{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
78
{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
80
{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
81
{$setc CALL_NOT_IN_CARBON := FALSE}
82
{$setc OLDROUTINENAMES := FALSE}
83
{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
84
{$setc OPAQUE_UPP_TYPES := TRUE}
85
{$setc OTCARBONAPPLICATION := TRUE}
86
{$setc OTKERNEL := FALSE}
87
{$setc PM_USE_SESSION_APIS := TRUE}
88
{$setc TARGET_API_MAC_CARBON := TRUE}
89
{$setc TARGET_API_MAC_OS8 := FALSE}
90
{$setc TARGET_API_MAC_OSX := TRUE}
91
{$setc TARGET_CARBON := TRUE}
92
{$setc TARGET_CPU_68K := FALSE}
93
{$setc TARGET_CPU_MIPS := FALSE}
94
{$setc TARGET_CPU_SPARC := FALSE}
95
{$setc TARGET_OS_MAC := TRUE}
96
{$setc TARGET_OS_UNIX := FALSE}
97
{$setc TARGET_OS_WIN32 := FALSE}
98
{$setc TARGET_RT_MAC_68881 := FALSE}
99
{$setc TARGET_RT_MAC_CFM := FALSE}
100
{$setc TARGET_RT_MAC_MACHO := TRUE}
101
{$setc TYPED_FUNCTION_POINTERS := TRUE}
102
{$setc TYPE_BOOL := FALSE}
103
{$setc TYPE_EXTENDED := FALSE}
104
{$setc TYPE_LONGLONG := TRUE}
105
uses MacTypes,MixedMode,MacErrors;
112
ThreadState = UInt16;
114
kReadyThreadState = 0;
115
kStoppedThreadState = 1;
116
kRunningThreadState = 2;
118
{ Error codes have been moved to Errors.(pah)}
120
{ Thread environment characteristics}
122
ThreadTaskRef = UnivPtr;
123
{ Thread characteristics}
125
ThreadStyle = UInt32;
127
kCooperativeThread = 1 shl 0;
128
kPreemptiveThread = 1 shl 1;
130
{ Thread identifiers}
135
kCurrentThreadID = 1;
136
kApplicationThreadID = 2;
138
{ Options when creating a thread}
140
ThreadOptions = UInt32;
142
kNewSuspend = 1 shl 0;
143
kUsePremadeThread = 1 shl 1;
144
kCreateIfNeeded = 1 shl 2;
145
kFPUNotNeeded = 1 shl 3;
146
kExactMatchThread = 1 shl 4;
148
{ Information supplied to the custom scheduler}
150
SchedulerInfoRec = record
152
CurrentThreadID: ThreadID;
153
SuggestedThreadID: ThreadID;
154
InterruptedCoopThreadID: ThreadID;
156
SchedulerInfoRecPtr = ^SchedulerInfoRec;
159
The following ProcPtrs cannot be interchanged with UniversalProcPtrs because
160
of differences between 680x0 and PowerPC runtime architectures with regard to
161
the implementation of the Thread Manager.
165
{ Prototype for thread's entry (main) routine}
167
ThreadEntryProcPtr = function( threadParam: UnivPtr ): voidPtr;
168
{ Prototype for custom thread scheduler routine}
170
ThreadSchedulerProcPtr = function( schedulerInfo: SchedulerInfoRecPtr ): ThreadID;
171
{ Prototype for custom thread switcher routine}
173
ThreadSwitchProcPtr = procedure( threadBeingSwitched: ThreadID; switchProcParam: UnivPtr );
174
{ Prototype for thread termination notification routine}
176
ThreadTerminationProcPtr = procedure( threadTerminated: ThreadID; terminationProcParam: UnivPtr );
177
{ Prototype for debugger NewThread notification}
179
DebuggerNewThreadProcPtr = procedure( threadCreated: ThreadID );
180
{ Prototype for debugger DisposeThread notification}
182
DebuggerDisposeThreadProcPtr = procedure( threadDeleted: ThreadID );
183
{ Prototype for debugger schedule notification}
185
DebuggerThreadSchedulerProcPtr = function( schedulerInfo: SchedulerInfoRecPtr ): ThreadID;
187
ThreadEntryUPP = ThreadEntryProcPtr;
188
ThreadSchedulerUPP = ThreadSchedulerProcPtr;
189
ThreadSwitchUPP = ThreadSwitchProcPtr;
190
ThreadTerminationUPP = ThreadTerminationProcPtr;
191
DebuggerNewThreadUPP = DebuggerNewThreadProcPtr;
192
DebuggerDisposeThreadUPP = DebuggerDisposeThreadProcPtr;
193
DebuggerThreadSchedulerUPP = DebuggerThreadSchedulerProcPtr;
195
* NewThreadEntryUPP()
198
* Mac OS X: in version 10.0 and later in CoreServices.framework
199
* CarbonLib: in CarbonLib 1.0 and later
200
* Non-Carbon CFM: available as macro/inline
202
function NewThreadEntryUPP( userRoutine: ThreadEntryProcPtr ): ThreadEntryUPP; external name '_NewThreadEntryUPP';
203
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
206
* NewThreadSchedulerUPP()
209
* Mac OS X: in version 10.0 and later in CoreServices.framework
210
* CarbonLib: in CarbonLib 1.0 and later
211
* Non-Carbon CFM: available as macro/inline
213
function NewThreadSchedulerUPP( userRoutine: ThreadSchedulerProcPtr ): ThreadSchedulerUPP; external name '_NewThreadSchedulerUPP';
214
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
217
* NewThreadSwitchUPP()
220
* Mac OS X: in version 10.0 and later in CoreServices.framework
221
* CarbonLib: in CarbonLib 1.0 and later
222
* Non-Carbon CFM: available as macro/inline
224
function NewThreadSwitchUPP( userRoutine: ThreadSwitchProcPtr ): ThreadSwitchUPP; external name '_NewThreadSwitchUPP';
225
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
228
* NewThreadTerminationUPP()
231
* Mac OS X: in version 10.0 and later in CoreServices.framework
232
* CarbonLib: in CarbonLib 1.0 and later
233
* Non-Carbon CFM: available as macro/inline
235
function NewThreadTerminationUPP( userRoutine: ThreadTerminationProcPtr ): ThreadTerminationUPP; external name '_NewThreadTerminationUPP';
236
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
239
* NewDebuggerNewThreadUPP()
242
* Mac OS X: in version 10.0 and later in CoreServices.framework
243
* CarbonLib: in CarbonLib 1.0 and later
244
* Non-Carbon CFM: available as macro/inline
246
function NewDebuggerNewThreadUPP( userRoutine: DebuggerNewThreadProcPtr ): DebuggerNewThreadUPP; external name '_NewDebuggerNewThreadUPP';
247
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
250
* NewDebuggerDisposeThreadUPP()
253
* Mac OS X: in version 10.0 and later in CoreServices.framework
254
* CarbonLib: in CarbonLib 1.0 and later
255
* Non-Carbon CFM: available as macro/inline
257
function NewDebuggerDisposeThreadUPP( userRoutine: DebuggerDisposeThreadProcPtr ): DebuggerDisposeThreadUPP; external name '_NewDebuggerDisposeThreadUPP';
258
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
261
* NewDebuggerThreadSchedulerUPP()
264
* Mac OS X: in version 10.0 and later in CoreServices.framework
265
* CarbonLib: in CarbonLib 1.0 and later
266
* Non-Carbon CFM: available as macro/inline
268
function NewDebuggerThreadSchedulerUPP( userRoutine: DebuggerThreadSchedulerProcPtr ): DebuggerThreadSchedulerUPP; external name '_NewDebuggerThreadSchedulerUPP';
269
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
272
* DisposeThreadEntryUPP()
275
* Mac OS X: in version 10.0 and later in CoreServices.framework
276
* CarbonLib: in CarbonLib 1.0 and later
277
* Non-Carbon CFM: available as macro/inline
279
procedure DisposeThreadEntryUPP( userUPP: ThreadEntryUPP ); external name '_DisposeThreadEntryUPP';
280
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
283
* DisposeThreadSchedulerUPP()
286
* Mac OS X: in version 10.0 and later in CoreServices.framework
287
* CarbonLib: in CarbonLib 1.0 and later
288
* Non-Carbon CFM: available as macro/inline
290
procedure DisposeThreadSchedulerUPP( userUPP: ThreadSchedulerUPP ); external name '_DisposeThreadSchedulerUPP';
291
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
294
* DisposeThreadSwitchUPP()
297
* Mac OS X: in version 10.0 and later in CoreServices.framework
298
* CarbonLib: in CarbonLib 1.0 and later
299
* Non-Carbon CFM: available as macro/inline
301
procedure DisposeThreadSwitchUPP( userUPP: ThreadSwitchUPP ); external name '_DisposeThreadSwitchUPP';
302
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
305
* DisposeThreadTerminationUPP()
308
* Mac OS X: in version 10.0 and later in CoreServices.framework
309
* CarbonLib: in CarbonLib 1.0 and later
310
* Non-Carbon CFM: available as macro/inline
312
procedure DisposeThreadTerminationUPP( userUPP: ThreadTerminationUPP ); external name '_DisposeThreadTerminationUPP';
313
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
316
* DisposeDebuggerNewThreadUPP()
319
* Mac OS X: in version 10.0 and later in CoreServices.framework
320
* CarbonLib: in CarbonLib 1.0 and later
321
* Non-Carbon CFM: available as macro/inline
323
procedure DisposeDebuggerNewThreadUPP( userUPP: DebuggerNewThreadUPP ); external name '_DisposeDebuggerNewThreadUPP';
324
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
327
* DisposeDebuggerDisposeThreadUPP()
330
* Mac OS X: in version 10.0 and later in CoreServices.framework
331
* CarbonLib: in CarbonLib 1.0 and later
332
* Non-Carbon CFM: available as macro/inline
334
procedure DisposeDebuggerDisposeThreadUPP( userUPP: DebuggerDisposeThreadUPP ); external name '_DisposeDebuggerDisposeThreadUPP';
335
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
338
* DisposeDebuggerThreadSchedulerUPP()
341
* Mac OS X: in version 10.0 and later in CoreServices.framework
342
* CarbonLib: in CarbonLib 1.0 and later
343
* Non-Carbon CFM: available as macro/inline
345
procedure DisposeDebuggerThreadSchedulerUPP( userUPP: DebuggerThreadSchedulerUPP ); external name '_DisposeDebuggerThreadSchedulerUPP';
346
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
349
* InvokeThreadEntryUPP()
352
* Mac OS X: in version 10.0 and later in CoreServices.framework
353
* CarbonLib: in CarbonLib 1.0 and later
354
* Non-Carbon CFM: available as macro/inline
356
function InvokeThreadEntryUPP( threadParam: UnivPtr; userUPP: ThreadEntryUPP ): voidPtr; external name '_InvokeThreadEntryUPP';
357
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
360
* InvokeThreadSchedulerUPP()
363
* Mac OS X: in version 10.0 and later in CoreServices.framework
364
* CarbonLib: in CarbonLib 1.0 and later
365
* Non-Carbon CFM: available as macro/inline
367
function InvokeThreadSchedulerUPP( schedulerInfo: SchedulerInfoRecPtr; userUPP: ThreadSchedulerUPP ): ThreadID; external name '_InvokeThreadSchedulerUPP';
368
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
371
* InvokeThreadSwitchUPP()
374
* Mac OS X: in version 10.0 and later in CoreServices.framework
375
* CarbonLib: in CarbonLib 1.0 and later
376
* Non-Carbon CFM: available as macro/inline
378
procedure InvokeThreadSwitchUPP( threadBeingSwitched: ThreadID; switchProcParam: UnivPtr; userUPP: ThreadSwitchUPP ); external name '_InvokeThreadSwitchUPP';
379
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
382
* InvokeThreadTerminationUPP()
385
* Mac OS X: in version 10.0 and later in CoreServices.framework
386
* CarbonLib: in CarbonLib 1.0 and later
387
* Non-Carbon CFM: available as macro/inline
389
procedure InvokeThreadTerminationUPP( threadTerminated: ThreadID; terminationProcParam: UnivPtr; userUPP: ThreadTerminationUPP ); external name '_InvokeThreadTerminationUPP';
390
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
393
* InvokeDebuggerNewThreadUPP()
396
* Mac OS X: in version 10.0 and later in CoreServices.framework
397
* CarbonLib: in CarbonLib 1.0 and later
398
* Non-Carbon CFM: available as macro/inline
400
procedure InvokeDebuggerNewThreadUPP( threadCreated: ThreadID; userUPP: DebuggerNewThreadUPP ); external name '_InvokeDebuggerNewThreadUPP';
401
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
404
* InvokeDebuggerDisposeThreadUPP()
407
* Mac OS X: in version 10.0 and later in CoreServices.framework
408
* CarbonLib: in CarbonLib 1.0 and later
409
* Non-Carbon CFM: available as macro/inline
411
procedure InvokeDebuggerDisposeThreadUPP( threadDeleted: ThreadID; userUPP: DebuggerDisposeThreadUPP ); external name '_InvokeDebuggerDisposeThreadUPP';
412
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
415
* InvokeDebuggerThreadSchedulerUPP()
418
* Mac OS X: in version 10.0 and later in CoreServices.framework
419
* CarbonLib: in CarbonLib 1.0 and later
420
* Non-Carbon CFM: available as macro/inline
422
function InvokeDebuggerThreadSchedulerUPP( schedulerInfo: SchedulerInfoRecPtr; userUPP: DebuggerThreadSchedulerUPP ): ThreadID; external name '_InvokeDebuggerThreadSchedulerUPP';
423
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
426
Thread Manager function pointers (TPP):
427
on classic 68k use raw function pointers (same as UPP's)
428
on classic PowerPC, use raw function pointers
429
on classic PowerPC with OPAQUE_UPP_TYPES=1, use UPP's
430
on CFM-68K, use UPP's
436
ThreadEntryTPP = ThreadEntryUPP;
437
ThreadSchedulerTPP = ThreadSchedulerUPP;
438
ThreadSwitchTPP = ThreadSwitchUPP;
439
ThreadTerminationTPP = ThreadTerminationUPP;
440
DebuggerNewThreadTPP = DebuggerNewThreadUPP;
441
DebuggerDisposeThreadTPP = DebuggerDisposeThreadUPP;
442
DebuggerThreadSchedulerTPP = DebuggerThreadSchedulerUPP;
447
* Mac OS X: in version 10.0 and later in CoreServices.framework
448
* CarbonLib: in CarbonLib 1.0 and later
449
* Non-Carbon CFM: in ThreadsLib 1.0 and later
451
function NewThread( threadStyle: ThreadStyle; threadEntry: ThreadEntryTPP; threadParam: UnivPtr; stackSize: Size; options: ThreadOptions; threadResult: UnivPtrPtr { can be NULL }; var threadMade: ThreadID ): OSErr; external name '_NewThread';
452
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
456
* SetThreadScheduler()
459
* Mac OS X: in version 10.0 and later in CoreServices.framework
460
* CarbonLib: in CarbonLib 1.0 and later
461
* Non-Carbon CFM: in ThreadsLib 1.0 and later
463
function SetThreadScheduler( threadScheduler: ThreadSchedulerTPP ): OSErr; external name '_SetThreadScheduler';
464
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
468
* SetThreadSwitcher()
471
* Mac OS X: in version 10.0 and later in CoreServices.framework
472
* CarbonLib: in CarbonLib 1.0 and later
473
* Non-Carbon CFM: in ThreadsLib 1.0 and later
475
function SetThreadSwitcher( thread: ThreadID; threadSwitcher: ThreadSwitchTPP; switchProcParam: UnivPtr; inOrOut: Boolean ): OSErr; external name '_SetThreadSwitcher';
476
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
480
* SetThreadTerminator()
483
* Mac OS X: in version 10.0 and later in CoreServices.framework
484
* CarbonLib: in CarbonLib 1.0 and later
485
* Non-Carbon CFM: in ThreadsLib 1.0 and later
487
function SetThreadTerminator( thread: ThreadID; threadTerminator: ThreadTerminationTPP; terminationProcParam: UnivPtr ): OSErr; external name '_SetThreadTerminator';
488
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
492
* SetDebuggerNotificationProcs()
495
* Mac OS X: in version 10.0 and later in CoreServices.framework
496
* CarbonLib: in CarbonLib 1.0 and later
497
* Non-Carbon CFM: in ThreadsLib 1.0 and later
499
function SetDebuggerNotificationProcs( notifyNewThread: DebuggerNewThreadTPP; notifyDisposeThread: DebuggerDisposeThreadTPP; notifyThreadScheduler: DebuggerThreadSchedulerTPP ): OSErr; external name '_SetDebuggerNotificationProcs';
500
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
507
* Mac OS X: in version 10.0 and later in CoreServices.framework
508
* CarbonLib: in CarbonLib 1.0 and later
509
* Non-Carbon CFM: in ThreadsLib 1.0 and later
511
function CreateThreadPool( threadStyle: ThreadStyle; numToCreate: SInt16; stackSize: Size ): OSErr; external name '_CreateThreadPool';
512
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
516
* GetFreeThreadCount() *** DEPRECATED ***
519
* Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.3
520
* CarbonLib: in CarbonLib 1.0 and later
521
* Non-Carbon CFM: in ThreadsLib 1.0 and later
523
function GetFreeThreadCount( threadStyle: ThreadStyle; var freeCount: SInt16 ): OSErr; external name '_GetFreeThreadCount';
524
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 *)
528
* GetSpecificFreeThreadCount() *** DEPRECATED ***
531
* Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.3
532
* CarbonLib: in CarbonLib 1.0 and later
533
* Non-Carbon CFM: in ThreadsLib 1.0 and later
535
function GetSpecificFreeThreadCount( threadStyle: ThreadStyle; stackSize: Size; var freeCount: SInt16 ): OSErr; external name '_GetSpecificFreeThreadCount';
536
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 *)
540
* GetDefaultThreadStackSize()
543
* Mac OS X: in version 10.0 and later in CoreServices.framework
544
* CarbonLib: in CarbonLib 1.0 and later
545
* Non-Carbon CFM: in ThreadsLib 1.0 and later
547
function GetDefaultThreadStackSize( threadStyle: ThreadStyle; var stackSize: Size ): OSErr; external name '_GetDefaultThreadStackSize';
548
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
552
* ThreadCurrentStackSpace()
555
* Mac OS X: in version 10.0 and later in CoreServices.framework
556
* CarbonLib: in CarbonLib 1.0 and later
557
* Non-Carbon CFM: in ThreadsLib 1.0 and later
559
function ThreadCurrentStackSpace( thread: ThreadID; var freeStack: UInt32 ): OSErr; external name '_ThreadCurrentStackSpace';
560
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
567
* Mac OS X: in version 10.0 and later in CoreServices.framework
568
* CarbonLib: in CarbonLib 1.0 and later
569
* Non-Carbon CFM: in ThreadsLib 1.0 and later
571
function DisposeThread( threadToDump: ThreadID; threadResult: UnivPtr; recycleThread: Boolean ): OSErr; external name '_DisposeThread';
572
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
579
* Mac OS X: in version 10.0 and later in CoreServices.framework
580
* CarbonLib: in CarbonLib 1.0 and later
581
* Non-Carbon CFM: in ThreadsLib 1.0 and later
583
function YieldToThread( suggestedThread: ThreadID ): OSErr; external name '_YieldToThread';
584
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
591
* Mac OS X: in version 10.0 and later in CoreServices.framework
592
* CarbonLib: in CarbonLib 1.0 and later
593
* Non-Carbon CFM: in ThreadsLib 1.0 and later
595
function YieldToAnyThread: OSErr; external name '_YieldToAnyThread';
596
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
600
* [Mac]GetCurrentThread()
603
* Mac OS X: in version 10.0 and later in CoreServices.framework
604
* CarbonLib: in CarbonLib 1.0 and later
605
* Non-Carbon CFM: in ThreadsLib 1.0 and later
607
function GetCurrentThread( var currentThreadID: ThreadID ): OSErr; external name '_GetCurrentThread';
608
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
609
function MacGetCurrentThread( var currentThreadID: ThreadID ): OSErr; external name '_GetCurrentThread';
610
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
617
* Mac OS X: in version 10.0 and later in CoreServices.framework
618
* CarbonLib: in CarbonLib 1.0 and later
619
* Non-Carbon CFM: in ThreadsLib 1.0 and later
621
function GetThreadState( threadToGet: ThreadID; var threadState: ThreadState ): OSErr; external name '_GetThreadState';
622
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
629
* Mac OS X: in version 10.0 and later in CoreServices.framework
630
* CarbonLib: in CarbonLib 1.0 and later
631
* Non-Carbon CFM: in ThreadsLib 1.0 and later
633
function SetThreadState( threadToSet: ThreadID; newState: ThreadState; suggestedThread: ThreadID ): OSErr; external name '_SetThreadState';
634
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
638
* SetThreadStateEndCritical()
641
* Mac OS X: in version 10.0 and later in CoreServices.framework
642
* CarbonLib: in CarbonLib 1.0 and later
643
* Non-Carbon CFM: in ThreadsLib 1.0 and later
645
function SetThreadStateEndCritical( threadToSet: ThreadID; newState: ThreadState; suggestedThread: ThreadID ): OSErr; external name '_SetThreadStateEndCritical';
646
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
650
* ThreadBeginCritical()
653
* Mac OS X: in version 10.0 and later in CoreServices.framework
654
* CarbonLib: in CarbonLib 1.0 and later
655
* Non-Carbon CFM: in ThreadsLib 1.0 and later
657
function ThreadBeginCritical: OSErr; external name '_ThreadBeginCritical';
658
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
662
* ThreadEndCritical()
665
* Mac OS X: in version 10.0 and later in CoreServices.framework
666
* CarbonLib: in CarbonLib 1.0 and later
667
* Non-Carbon CFM: in ThreadsLib 1.0 and later
669
function ThreadEndCritical: OSErr; external name '_ThreadEndCritical';
670
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
674
* GetThreadCurrentTaskRef()
677
* Mac OS X: in version 10.0 and later in CoreServices.framework
678
* CarbonLib: in CarbonLib 1.0 and later
679
* Non-Carbon CFM: in ThreadsLib 1.0 and later
681
function GetThreadCurrentTaskRef( var threadTRef: ThreadTaskRef ): OSErr; external name '_GetThreadCurrentTaskRef';
682
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
686
* GetThreadStateGivenTaskRef()
689
* Mac OS X: in version 10.0 and later in CoreServices.framework
690
* CarbonLib: in CarbonLib 1.0 and later
691
* Non-Carbon CFM: in ThreadsLib 1.0 and later
693
function GetThreadStateGivenTaskRef( threadTRef: ThreadTaskRef; threadToGet: ThreadID; var threadState: ThreadState ): OSErr; external name '_GetThreadStateGivenTaskRef';
694
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
698
* SetThreadReadyGivenTaskRef()
701
* Mac OS X: in version 10.0 and later in CoreServices.framework
702
* CarbonLib: in CarbonLib 1.0 and later
703
* Non-Carbon CFM: in ThreadsLib 1.0 and later
705
function SetThreadReadyGivenTaskRef( threadTRef: ThreadTaskRef; threadToSet: ThreadID ): OSErr; external name '_SetThreadReadyGivenTaskRef';
706
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)