~ubuntu-branches/ubuntu/feisty/fpc/feisty

« back to all changes in this revision

Viewing changes to packages/extra/univint/Threads.pas

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-01-27 20:08:50 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070127200850-9mrptaqqjsx9nwa7
Tags: 2.0.4-5
* Fixed Build-Depends.
* Add myself to Uploaders in debian/control.
* Make sure that the sources are really patched before building them.
* Build unit 'libc' on powerpc too.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{
 
2
     File:       CarbonCore/Threads.h
 
3
 
 
4
     Contains:   Thread Manager Interfaces.
 
5
 
 
6
     Version:    CarbonCore-654.0.85~1
 
7
 
 
8
     Copyright:  � 1991-2005 by Apple Computer, Inc., all rights reserved.
 
9
 
 
10
     Bugs?:      For bug reports, consult the following page on
 
11
                 the World Wide Web:
 
12
 
 
13
                     http://www.freepascal.org/bugs.html
 
14
 
 
15
}
 
16
{      Pascal Translation Updated:  Peter N Lewis, <peter@stairways.com.au>, November 2005 }
 
17
{
 
18
    Modified for use with Free Pascal
 
19
    Version 200
 
20
    Please report any bugs to <gpc@microbizz.nl>
 
21
}
 
22
 
 
23
{$mode macpas}
 
24
{$packenum 1}
 
25
{$macro on}
 
26
{$inline on}
 
27
{$CALLING MWPASCAL}
 
28
 
 
29
unit Threads;
 
30
interface
 
31
{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
 
32
{$setc GAP_INTERFACES_VERSION := $0200}
 
33
 
 
34
{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
 
35
    {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
 
36
{$endc}
 
37
 
 
38
{$ifc defined CPUPOWERPC and defined CPUI386}
 
39
        {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
 
40
{$endc}
 
41
{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
 
42
        {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
 
43
{$endc}
 
44
 
 
45
{$ifc not defined __ppc__ and defined CPUPOWERPC}
 
46
        {$setc __ppc__ := 1}
 
47
{$elsec}
 
48
        {$setc __ppc__ := 0}
 
49
{$endc}
 
50
{$ifc not defined __i386__ and defined CPUI386}
 
51
        {$setc __i386__ := 1}
 
52
{$elsec}
 
53
        {$setc __i386__ := 0}
 
54
{$endc}
 
55
 
 
56
{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
 
57
        {$error Conflicting definitions for __ppc__ and __i386__}
 
58
{$endc}
 
59
 
 
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}
 
66
{$elsec}
 
67
        {$error Neither __ppc__ nor __i386__ is defined.}
 
68
{$endc}
 
69
{$setc TARGET_CPU_PPC_64 := FALSE}
 
70
 
 
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}
 
77
{$elsec}
 
78
        {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
 
79
{$endc}
 
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;
 
106
 
 
107
 
 
108
{$ALIGN MAC68K}
 
109
 
 
110
{ Thread states}
 
111
type
 
112
        ThreadState = UInt16;
 
113
const
 
114
        kReadyThreadState = 0;
 
115
        kStoppedThreadState = 1;
 
116
        kRunningThreadState = 2;
 
117
 
 
118
{ Error codes have been moved to Errors.(pah)}
 
119
 
 
120
{ Thread environment characteristics}
 
121
type
 
122
        ThreadTaskRef = UnivPtr;
 
123
{ Thread characteristics}
 
124
type
 
125
        ThreadStyle = UInt32;
 
126
const
 
127
        kCooperativeThread = 1 shl 0;
 
128
        kPreemptiveThread = 1 shl 1;
 
129
 
 
130
{ Thread identifiers}
 
131
type
 
132
        ThreadID = UInt32;
 
133
const
 
134
        kNoThreadID = 0;
 
135
        kCurrentThreadID = 1;
 
136
        kApplicationThreadID = 2;
 
137
 
 
138
{ Options when creating a thread}
 
139
type
 
140
        ThreadOptions = UInt32;
 
141
const
 
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;
 
147
 
 
148
{ Information supplied to the custom scheduler}
 
149
type
 
150
        SchedulerInfoRec = record
 
151
                InfoRecSize: UInt32;
 
152
                CurrentThreadID: ThreadID;
 
153
                SuggestedThreadID: ThreadID;
 
154
                InterruptedCoopThreadID: ThreadID;
 
155
        end;
 
156
        SchedulerInfoRecPtr = ^SchedulerInfoRec;
 
157
 
 
158
{
 
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.
 
162
 }
 
163
type
 
164
        voidPtr = Ptr;
 
165
{ Prototype for thread's entry (main) routine}
 
166
type
 
167
        ThreadEntryProcPtr = function( threadParam: UnivPtr ): voidPtr;
 
168
{ Prototype for custom thread scheduler routine}
 
169
type
 
170
        ThreadSchedulerProcPtr = function( schedulerInfo: SchedulerInfoRecPtr ): ThreadID;
 
171
{ Prototype for custom thread switcher routine}
 
172
type
 
173
        ThreadSwitchProcPtr = procedure( threadBeingSwitched: ThreadID; switchProcParam: UnivPtr );
 
174
{ Prototype for thread termination notification routine}
 
175
type
 
176
        ThreadTerminationProcPtr = procedure( threadTerminated: ThreadID; terminationProcParam: UnivPtr );
 
177
{ Prototype for debugger NewThread notification}
 
178
type
 
179
        DebuggerNewThreadProcPtr = procedure( threadCreated: ThreadID );
 
180
{ Prototype for debugger DisposeThread notification}
 
181
type
 
182
        DebuggerDisposeThreadProcPtr = procedure( threadDeleted: ThreadID );
 
183
{ Prototype for debugger schedule notification}
 
184
type
 
185
        DebuggerThreadSchedulerProcPtr = function( schedulerInfo: SchedulerInfoRecPtr ): ThreadID;
 
186
type
 
187
        ThreadEntryUPP = ThreadEntryProcPtr;
 
188
        ThreadSchedulerUPP = ThreadSchedulerProcPtr;
 
189
        ThreadSwitchUPP = ThreadSwitchProcPtr;
 
190
        ThreadTerminationUPP = ThreadTerminationProcPtr;
 
191
        DebuggerNewThreadUPP = DebuggerNewThreadProcPtr;
 
192
        DebuggerDisposeThreadUPP = DebuggerDisposeThreadProcPtr;
 
193
        DebuggerThreadSchedulerUPP = DebuggerThreadSchedulerProcPtr;
 
194
{
 
195
 *  NewThreadEntryUPP()
 
196
 *  
 
197
 *  Availability:
 
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
 
201
 }
 
202
function NewThreadEntryUPP( userRoutine: ThreadEntryProcPtr ): ThreadEntryUPP; external name '_NewThreadEntryUPP';
 
203
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
204
 
 
205
{
 
206
 *  NewThreadSchedulerUPP()
 
207
 *  
 
208
 *  Availability:
 
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
 
212
 }
 
213
function NewThreadSchedulerUPP( userRoutine: ThreadSchedulerProcPtr ): ThreadSchedulerUPP; external name '_NewThreadSchedulerUPP';
 
214
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
215
 
 
216
{
 
217
 *  NewThreadSwitchUPP()
 
218
 *  
 
219
 *  Availability:
 
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
 
223
 }
 
224
function NewThreadSwitchUPP( userRoutine: ThreadSwitchProcPtr ): ThreadSwitchUPP; external name '_NewThreadSwitchUPP';
 
225
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
226
 
 
227
{
 
228
 *  NewThreadTerminationUPP()
 
229
 *  
 
230
 *  Availability:
 
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
 
234
 }
 
235
function NewThreadTerminationUPP( userRoutine: ThreadTerminationProcPtr ): ThreadTerminationUPP; external name '_NewThreadTerminationUPP';
 
236
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
237
 
 
238
{
 
239
 *  NewDebuggerNewThreadUPP()
 
240
 *  
 
241
 *  Availability:
 
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
 
245
 }
 
246
function NewDebuggerNewThreadUPP( userRoutine: DebuggerNewThreadProcPtr ): DebuggerNewThreadUPP; external name '_NewDebuggerNewThreadUPP';
 
247
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
248
 
 
249
{
 
250
 *  NewDebuggerDisposeThreadUPP()
 
251
 *  
 
252
 *  Availability:
 
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
 
256
 }
 
257
function NewDebuggerDisposeThreadUPP( userRoutine: DebuggerDisposeThreadProcPtr ): DebuggerDisposeThreadUPP; external name '_NewDebuggerDisposeThreadUPP';
 
258
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
259
 
 
260
{
 
261
 *  NewDebuggerThreadSchedulerUPP()
 
262
 *  
 
263
 *  Availability:
 
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
 
267
 }
 
268
function NewDebuggerThreadSchedulerUPP( userRoutine: DebuggerThreadSchedulerProcPtr ): DebuggerThreadSchedulerUPP; external name '_NewDebuggerThreadSchedulerUPP';
 
269
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
270
 
 
271
{
 
272
 *  DisposeThreadEntryUPP()
 
273
 *  
 
274
 *  Availability:
 
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
 
278
 }
 
279
procedure DisposeThreadEntryUPP( userUPP: ThreadEntryUPP ); external name '_DisposeThreadEntryUPP';
 
280
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
281
 
 
282
{
 
283
 *  DisposeThreadSchedulerUPP()
 
284
 *  
 
285
 *  Availability:
 
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
 
289
 }
 
290
procedure DisposeThreadSchedulerUPP( userUPP: ThreadSchedulerUPP ); external name '_DisposeThreadSchedulerUPP';
 
291
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
292
 
 
293
{
 
294
 *  DisposeThreadSwitchUPP()
 
295
 *  
 
296
 *  Availability:
 
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
 
300
 }
 
301
procedure DisposeThreadSwitchUPP( userUPP: ThreadSwitchUPP ); external name '_DisposeThreadSwitchUPP';
 
302
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
303
 
 
304
{
 
305
 *  DisposeThreadTerminationUPP()
 
306
 *  
 
307
 *  Availability:
 
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
 
311
 }
 
312
procedure DisposeThreadTerminationUPP( userUPP: ThreadTerminationUPP ); external name '_DisposeThreadTerminationUPP';
 
313
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
314
 
 
315
{
 
316
 *  DisposeDebuggerNewThreadUPP()
 
317
 *  
 
318
 *  Availability:
 
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
 
322
 }
 
323
procedure DisposeDebuggerNewThreadUPP( userUPP: DebuggerNewThreadUPP ); external name '_DisposeDebuggerNewThreadUPP';
 
324
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
325
 
 
326
{
 
327
 *  DisposeDebuggerDisposeThreadUPP()
 
328
 *  
 
329
 *  Availability:
 
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
 
333
 }
 
334
procedure DisposeDebuggerDisposeThreadUPP( userUPP: DebuggerDisposeThreadUPP ); external name '_DisposeDebuggerDisposeThreadUPP';
 
335
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
336
 
 
337
{
 
338
 *  DisposeDebuggerThreadSchedulerUPP()
 
339
 *  
 
340
 *  Availability:
 
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
 
344
 }
 
345
procedure DisposeDebuggerThreadSchedulerUPP( userUPP: DebuggerThreadSchedulerUPP ); external name '_DisposeDebuggerThreadSchedulerUPP';
 
346
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
347
 
 
348
{
 
349
 *  InvokeThreadEntryUPP()
 
350
 *  
 
351
 *  Availability:
 
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
 
355
 }
 
356
function InvokeThreadEntryUPP( threadParam: UnivPtr; userUPP: ThreadEntryUPP ): voidPtr; external name '_InvokeThreadEntryUPP';
 
357
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
358
 
 
359
{
 
360
 *  InvokeThreadSchedulerUPP()
 
361
 *  
 
362
 *  Availability:
 
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
 
366
 }
 
367
function InvokeThreadSchedulerUPP( schedulerInfo: SchedulerInfoRecPtr; userUPP: ThreadSchedulerUPP ): ThreadID; external name '_InvokeThreadSchedulerUPP';
 
368
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
369
 
 
370
{
 
371
 *  InvokeThreadSwitchUPP()
 
372
 *  
 
373
 *  Availability:
 
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
 
377
 }
 
378
procedure InvokeThreadSwitchUPP( threadBeingSwitched: ThreadID; switchProcParam: UnivPtr; userUPP: ThreadSwitchUPP ); external name '_InvokeThreadSwitchUPP';
 
379
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
380
 
 
381
{
 
382
 *  InvokeThreadTerminationUPP()
 
383
 *  
 
384
 *  Availability:
 
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
 
388
 }
 
389
procedure InvokeThreadTerminationUPP( threadTerminated: ThreadID; terminationProcParam: UnivPtr; userUPP: ThreadTerminationUPP ); external name '_InvokeThreadTerminationUPP';
 
390
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
391
 
 
392
{
 
393
 *  InvokeDebuggerNewThreadUPP()
 
394
 *  
 
395
 *  Availability:
 
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
 
399
 }
 
400
procedure InvokeDebuggerNewThreadUPP( threadCreated: ThreadID; userUPP: DebuggerNewThreadUPP ); external name '_InvokeDebuggerNewThreadUPP';
 
401
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
402
 
 
403
{
 
404
 *  InvokeDebuggerDisposeThreadUPP()
 
405
 *  
 
406
 *  Availability:
 
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
 
410
 }
 
411
procedure InvokeDebuggerDisposeThreadUPP( threadDeleted: ThreadID; userUPP: DebuggerDisposeThreadUPP ); external name '_InvokeDebuggerDisposeThreadUPP';
 
412
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
413
 
 
414
{
 
415
 *  InvokeDebuggerThreadSchedulerUPP()
 
416
 *  
 
417
 *  Availability:
 
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
 
421
 }
 
422
function InvokeDebuggerThreadSchedulerUPP( schedulerInfo: SchedulerInfoRecPtr; userUPP: DebuggerThreadSchedulerUPP ): ThreadID; external name '_InvokeDebuggerThreadSchedulerUPP';
 
423
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
424
 
 
425
{
 
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
 
431
   on Carbon, use UPP's
 
432
}
 
433
 
 
434
{ use UPP's}
 
435
type
 
436
        ThreadEntryTPP = ThreadEntryUPP;
 
437
        ThreadSchedulerTPP = ThreadSchedulerUPP;
 
438
        ThreadSwitchTPP = ThreadSwitchUPP;
 
439
        ThreadTerminationTPP = ThreadTerminationUPP;
 
440
        DebuggerNewThreadTPP = DebuggerNewThreadUPP;
 
441
        DebuggerDisposeThreadTPP = DebuggerDisposeThreadUPP;
 
442
        DebuggerThreadSchedulerTPP = DebuggerThreadSchedulerUPP;
 
443
{
 
444
 *  NewThread()
 
445
 *  
 
446
 *  Availability:
 
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
 
450
 }
 
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 *)
 
453
 
 
454
 
 
455
{
 
456
 *  SetThreadScheduler()
 
457
 *  
 
458
 *  Availability:
 
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
 
462
 }
 
463
function SetThreadScheduler( threadScheduler: ThreadSchedulerTPP ): OSErr; external name '_SetThreadScheduler';
 
464
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
465
 
 
466
 
 
467
{
 
468
 *  SetThreadSwitcher()
 
469
 *  
 
470
 *  Availability:
 
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
 
474
 }
 
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 *)
 
477
 
 
478
 
 
479
{
 
480
 *  SetThreadTerminator()
 
481
 *  
 
482
 *  Availability:
 
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
 
486
 }
 
487
function SetThreadTerminator( thread: ThreadID; threadTerminator: ThreadTerminationTPP; terminationProcParam: UnivPtr ): OSErr; external name '_SetThreadTerminator';
 
488
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
489
 
 
490
 
 
491
{
 
492
 *  SetDebuggerNotificationProcs()
 
493
 *  
 
494
 *  Availability:
 
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
 
498
 }
 
499
function SetDebuggerNotificationProcs( notifyNewThread: DebuggerNewThreadTPP; notifyDisposeThread: DebuggerDisposeThreadTPP; notifyThreadScheduler: DebuggerThreadSchedulerTPP ): OSErr; external name '_SetDebuggerNotificationProcs';
 
500
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
501
 
 
502
 
 
503
{
 
504
 *  CreateThreadPool()
 
505
 *  
 
506
 *  Availability:
 
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
 
510
 }
 
511
function CreateThreadPool( threadStyle: ThreadStyle; numToCreate: SInt16; stackSize: Size ): OSErr; external name '_CreateThreadPool';
 
512
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
513
 
 
514
 
 
515
{
 
516
 *  GetFreeThreadCount()   *** DEPRECATED ***
 
517
 *  
 
518
 *  Availability:
 
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
 
522
 }
 
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 *)
 
525
 
 
526
 
 
527
{
 
528
 *  GetSpecificFreeThreadCount()   *** DEPRECATED ***
 
529
 *  
 
530
 *  Availability:
 
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
 
534
 }
 
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 *)
 
537
 
 
538
 
 
539
{
 
540
 *  GetDefaultThreadStackSize()
 
541
 *  
 
542
 *  Availability:
 
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
 
546
 }
 
547
function GetDefaultThreadStackSize( threadStyle: ThreadStyle; var stackSize: Size ): OSErr; external name '_GetDefaultThreadStackSize';
 
548
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
549
 
 
550
 
 
551
{
 
552
 *  ThreadCurrentStackSpace()
 
553
 *  
 
554
 *  Availability:
 
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
 
558
 }
 
559
function ThreadCurrentStackSpace( thread: ThreadID; var freeStack: UInt32 ): OSErr; external name '_ThreadCurrentStackSpace';
 
560
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
561
 
 
562
 
 
563
{
 
564
 *  DisposeThread()
 
565
 *  
 
566
 *  Availability:
 
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
 
570
 }
 
571
function DisposeThread( threadToDump: ThreadID; threadResult: UnivPtr; recycleThread: Boolean ): OSErr; external name '_DisposeThread';
 
572
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
573
 
 
574
 
 
575
{
 
576
 *  YieldToThread()
 
577
 *  
 
578
 *  Availability:
 
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
 
582
 }
 
583
function YieldToThread( suggestedThread: ThreadID ): OSErr; external name '_YieldToThread';
 
584
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
585
 
 
586
 
 
587
{
 
588
 *  YieldToAnyThread()
 
589
 *  
 
590
 *  Availability:
 
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
 
594
 }
 
595
function YieldToAnyThread: OSErr; external name '_YieldToAnyThread';
 
596
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
597
 
 
598
 
 
599
{
 
600
 *  [Mac]GetCurrentThread()
 
601
 *  
 
602
 *  Availability:
 
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
 
606
 }
 
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 *)
 
611
 
 
612
 
 
613
{
 
614
 *  GetThreadState()
 
615
 *  
 
616
 *  Availability:
 
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
 
620
 }
 
621
function GetThreadState( threadToGet: ThreadID; var threadState: ThreadState ): OSErr; external name '_GetThreadState';
 
622
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
623
 
 
624
 
 
625
{
 
626
 *  SetThreadState()
 
627
 *  
 
628
 *  Availability:
 
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
 
632
 }
 
633
function SetThreadState( threadToSet: ThreadID; newState: ThreadState; suggestedThread: ThreadID ): OSErr; external name '_SetThreadState';
 
634
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
635
 
 
636
 
 
637
{
 
638
 *  SetThreadStateEndCritical()
 
639
 *  
 
640
 *  Availability:
 
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
 
644
 }
 
645
function SetThreadStateEndCritical( threadToSet: ThreadID; newState: ThreadState; suggestedThread: ThreadID ): OSErr; external name '_SetThreadStateEndCritical';
 
646
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
647
 
 
648
 
 
649
{
 
650
 *  ThreadBeginCritical()
 
651
 *  
 
652
 *  Availability:
 
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
 
656
 }
 
657
function ThreadBeginCritical: OSErr; external name '_ThreadBeginCritical';
 
658
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
659
 
 
660
 
 
661
{
 
662
 *  ThreadEndCritical()
 
663
 *  
 
664
 *  Availability:
 
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
 
668
 }
 
669
function ThreadEndCritical: OSErr; external name '_ThreadEndCritical';
 
670
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
671
 
 
672
 
 
673
{
 
674
 *  GetThreadCurrentTaskRef()
 
675
 *  
 
676
 *  Availability:
 
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
 
680
 }
 
681
function GetThreadCurrentTaskRef( var threadTRef: ThreadTaskRef ): OSErr; external name '_GetThreadCurrentTaskRef';
 
682
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
683
 
 
684
 
 
685
{
 
686
 *  GetThreadStateGivenTaskRef()
 
687
 *  
 
688
 *  Availability:
 
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
 
692
 }
 
693
function GetThreadStateGivenTaskRef( threadTRef: ThreadTaskRef; threadToGet: ThreadID; var threadState: ThreadState ): OSErr; external name '_GetThreadStateGivenTaskRef';
 
694
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
695
 
 
696
 
 
697
{
 
698
 *  SetThreadReadyGivenTaskRef()
 
699
 *  
 
700
 *  Availability:
 
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
 
704
 }
 
705
function SetThreadReadyGivenTaskRef( threadTRef: ThreadTaskRef; threadToSet: ThreadID ): OSErr; external name '_SetThreadReadyGivenTaskRef';
 
706
(* AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER *)
 
707
 
 
708
 
 
709
 
 
710
 
 
711
end.