Mac OS 9
Multiprocessing.h
Go to the documentation of this file.
1 
155 #ifndef __MULTIPROCESSING__
156 #define __MULTIPROCESSING__
157 
158 #ifndef __MACTYPES__
159 #include <MacTypes.h>
160 #endif
161 
162 #if PRAGMA_ONCE
163 #pragma once
164 #endif
165 
166 #ifdef __cplusplus
167 extern "C"
168 {
169 #endif
170 
171 #if PRAGMA_IMPORT
172 #pragma import on
173 #endif
174 
175 #if PRAGMA_STRUCT_ALIGN
176 #pragma options align = power
177 #elif PRAGMA_STRUCT_PACKPUSH
178 #pragma pack(push, 2)
179 #elif PRAGMA_STRUCT_PACK
180 #pragma pack(2)
181 #endif
182 
187 #define MPCopyrightNotice "Copyright © 1995-2001 Apple Computer, Inc.\n"
188 #define MPLibraryName "MPLibrary"
189 #define MPLibraryCName MPLibraryName
190 #define MPLibraryPName "\p" MPLibraryName
191 #define MP_API_Version "2.4"
192 
193  enum
194  {
195  MPLibrary_MajorVersion =
196  2, /*< ! When these change be sure to update the build versions*/
197  MPLibrary_MinorVersion =
198  4, /*< ! used in the startup check in MPInitializeAPI!*/
199  MPLibrary_Release = 1,
200  MPLibrary_DevelopmentRevision = 1
201  };
202 
203  typedef struct OpaqueMPProcessID *MPProcessID;
204  typedef struct OpaqueMPTaskID *MPTaskID;
205  typedef struct OpaqueMPQueueID *MPQueueID;
206  typedef struct OpaqueMPSemaphoreID *MPSemaphoreID;
207  typedef struct OpaqueMPCriticalRegionID *MPCriticalRegionID;
208  typedef struct OpaqueMPTimerID *MPTimerID;
209  typedef struct OpaqueMPEventID *MPEventID;
210  typedef struct OpaqueMPAddressSpaceID *MPAddressSpaceID;
211  typedef struct OpaqueMPNotificationID *MPNotificationID;
212  typedef struct OpaqueMPCoherenceID *MPCoherenceID;
213  typedef struct OpaqueMPCpuID *MPCpuID;
214  typedef struct OpaqueMPAreaID *MPAreaID;
215  typedef struct OpaqueMPConsoleID *MPConsoleID;
216  typedef struct OpaqueMPOpaqueID *MPOpaqueID;
217 
219  enum
220  {
221  kOpaqueAnyID = 0,
222  kOpaqueProcessID = 1,
223  kOpaqueTaskID = 2,
224  kOpaqueTimerID = 3,
225  kOpaqueQueueID = 4,
226  kOpaqueSemaphoreID = 5,
227  kOpaqueCriticalRegionID = 6,
228  kOpaqueCpuID = 7,
229  kOpaqueAddressSpaceID = 8,
230  kOpaqueEventID = 9,
231  kOpaqueCoherenceID = 10,
232  kOpaqueAreaID = 11,
233  kOpaqueNotificationID = 12,
234  kOpaqueConsoleID = 13
235  };
236 
237  typedef UInt32 MPOpaqueIDClass;
238 
239  enum
240  {
244  kMPNoID = kInvalidID
245  };
246 
247  typedef OptionBits MPTaskOptions;
248  typedef UInt32 TaskStorageIndex;
249  typedef UInt32 TaskStorageValue;
250  typedef ItemCount MPSemaphoreCount;
251  typedef UInt32 MPTaskWeight;
252  typedef UInt32 MPEventFlags;
253  typedef UInt32 MPExceptionKind;
254  typedef UInt32 MPTaskStateKind;
255  typedef UInt32 MPPageSizeClass;
256 
257  enum
258  {
259  kDurationImmediate = 0L,
260  kDurationForever = 0x7FFFFFFF,
261  kDurationMillisecond = 1,
262  kDurationMicrosecond = -1
263  };
264 
279  ItemCount MPProcessors(void);
280 
291  ItemCount MPProcessorsScheduled(void);
292 
297  enum
298  {
303  kMPCreateTaskNotDebuggableMask = 1L << 2,
304  kMPCreateTaskValidOptionsMask =
305  kMPCreateTaskTakesAllExceptionsMask | kMPCreateTaskNotDebuggableMask
306  };
307 
308  typedef CALLBACK_API_C(OSStatus, TaskProc)(void *parameter);
309 
318  OSStatus MPCreateTask(TaskProc entryPoint, void *parameter, ByteCount stackSize,
319  MPQueueID notifyQueue, void *terminationParameter1,
320  void *terminationParameter2, MPTaskOptions options,
321  MPTaskID *task );
322 
331  OSStatus MPTerminateTask(MPTaskID task, OSStatus terminationStatus);
332 
341  OSStatus MPSetTaskWeight(MPTaskID task, MPTaskWeight weight);
342 
351  Boolean MPTaskIsPreemptive(MPTaskID taskID );
352 
361  void MPExit(OSStatus status);
362 
371  void MPYield(void);
372 
381  MPTaskID MPCurrentTaskID(void);
382 
391  OSStatus MPSetTaskType(MPTaskID task, OSType taskType);
392 
403  OSStatus MPAllocateTaskStorageIndex(TaskStorageIndex *index);
404 
415  OSStatus MPDeallocateTaskStorageIndex(TaskStorageIndex index);
416 
427  OSStatus MPSetTaskStorageValue(TaskStorageIndex index, TaskStorageValue value);
428 
439  TaskStorageValue MPGetTaskStorageValue(TaskStorageIndex index);
440 
453  OSStatus MPCreateQueue(MPQueueID *queue);
454 
463  OSStatus MPDeleteQueue(MPQueueID queue);
464 
473  OSStatus MPNotifyQueue(MPQueueID queue, void *param1, void *param2, void *param3);
474 
483  OSStatus MPWaitOnQueue(MPQueueID queue, void **param1,
484  void **param2,
485  void **param3,
486  Duration timeout);
487 
496  OSStatus MPSetQueueReserve(MPQueueID queue, ItemCount count);
497 
506  OSStatus MPCreateSemaphore(MPSemaphoreCount maximumValue, MPSemaphoreCount initialValue,
507  MPSemaphoreID *semaphore);
508 
517  OSStatus MPDeleteSemaphore(MPSemaphoreID semaphore);
518 
527  OSStatus MPSignalSemaphore(MPSemaphoreID semaphore);
528 
537  OSStatus MPWaitOnSemaphore(MPSemaphoreID semaphore, Duration timeout);
538 
539 #define MPCreateBinarySemaphore(semaphore) MPCreateSemaphore(1, 1, (semaphore))
540 
549  OSStatus MPCreateCriticalRegion(MPCriticalRegionID *criticalRegion);
550 
559  OSStatus MPDeleteCriticalRegion(MPCriticalRegionID criticalRegion);
560 
569  OSStatus MPEnterCriticalRegion(MPCriticalRegionID criticalRegion, Duration timeout);
570 
579  OSStatus MPExitCriticalRegion(MPCriticalRegionID criticalRegion);
580 
589  OSStatus
590  MPCreateEvent(MPEventID *event);
591 
600  OSStatus MPDeleteEvent(MPEventID event);
601 
610  OSStatus MPSetEvent(MPEventID event, MPEventFlags flags);
611 
620  OSStatus
621  MPWaitForEvent(MPEventID event, MPEventFlags *flags,
622  Duration timeout);
623 
636  OSStatus MPCreateNotification(MPNotificationID *notificationID);
637 
646  OSStatus MPDeleteNotification(MPNotificationID notificationID);
647 
656  OSStatus MPModifyNotification(MPNotificationID notificationID, MPOpaqueID anID,
657  void *notifyParam1, void *notifyParam2,
658  void *notifyParam3);
659 
668  OSStatus MPModifyNotificationParameters(MPNotificationID notificationID,
669  MPOpaqueIDClass kind, void *notifyParam1,
670  void *notifyParam2, void *notifyParam3);
671 
680  OSStatus MPCauseNotification(MPNotificationID notificationID);
681 
688  enum
689  {
690  kMPPreserveTimerIDMask = 1L << 0,
691  kMPTimeIsDeltaMask = 1L << 1,
692  kMPTimeIsDurationMask = 1L << 2
693  };
694 
703  OSStatus MPDelayUntil(AbsoluteTime *expirationTime);
704 
705 #if CALL_NOT_IN_CARBON
714  OSStatus
715  MPDelayUntilSys(AbsoluteTime *expirationTime);
716 
717 #endif /* CALL_NOT_IN_CARBON */
718 
727  OSStatus MPCreateTimer(MPTimerID *timerID);
728 
737  OSStatus MPDeleteTimer(MPTimerID timerID);
738 
747  OSStatus MPSetTimerNotify(MPTimerID timerID, MPOpaqueID anID, void *notifyParam1,
748  void *notifyParam2, void *notifyParam3);
749 
758  OSStatus MPArmTimer(MPTimerID timerID, AbsoluteTime *expirationTime, OptionBits options);
759 
768  OSStatus MPCancelTimer(MPTimerID timerID, AbsoluteTime *timeRemaining /*< can be NULL */);
769 
775  enum
776  {
777  kMPMaxAllocSize = 1024L * 1024 * 1024
778  };
779 
781  enum
782  {
783  kMPAllocateDefaultAligned = 0,
784  kMPAllocate8ByteAligned = 3,
785  kMPAllocate16ByteAligned = 4,
786  kMPAllocate32ByteAligned = 5,
787  kMPAllocate1024ByteAligned = 10,
788  kMPAllocate4096ByteAligned = 12,
789  kMPAllocateMaxAlignment = 16, /*< Somewhat arbitrary limit on expectations.*/
790  kMPAllocateAltiVecAligned = kMPAllocate16ByteAligned, /*< The P.C. name.*/
791  kMPAllocateVMXAligned =
792  kMPAllocateAltiVecAligned, /*< The older, common name.*/
793  kMPAllocateVMPageAligned = 254, /*< Pseudo value, converted at runtime.*/
794  kMPAllocateInterlockAligned = 255 /*< Pseudo value, converted at runtime.*/
795  };
796 
798  enum
799  {
800  kMPAllocateClearMask = 0x0001, /*< Zero the allocated block.*/
801  kMPAllocateGloballyMask =
802  0x0002, /*< Allocate from the globally visible pool.*/
803  kMPAllocateResidentMask = 0x0004, /*< Allocate from the RAM-resident pool.*/
804  kMPAllocateNoGrowthMask = 0x0010, /*< Do not attempt to grow the pool.*/
805  kMPAllocateNoCreateMask =
806  0x0020 /*< Do not attempt to create the pool if it doesn't exist yet.*/
807  };
808 
818  LogicalAddress MPAllocateAligned(ByteCount size, UInt8 alignment, OptionBits options);
819 
830  LogicalAddress MPAllocate(ByteCount size);
831 
840  void MPFree(LogicalAddress object);
841 
850  ByteCount MPGetAllocatedBlockSize(LogicalAddress object);
851 
860  void MPBlockCopy(LogicalAddress source, LogicalAddress destination, ByteCount size);
861 
872  void MPBlockClear(LogicalAddress address, ByteCount size);
873 
884  void MPDataToCode(LogicalAddress address, ByteCount size);
885 
891  enum
892  {
893  kMPTaskStateRegisters = 0, /*< The task general registers.*/
894  kMPTaskStateFPU = 1, /*< The task floating point registers*/
895  kMPTaskStateVectors = 2, /*< The task vector registers*/
896  kMPTaskStateMachine = 3, /*< The task machine registers*/
897  kMPTaskState32BitMemoryException =
898  4, /*< The task memory exception information for 32-bit CPUs.*/
899  kMPTaskStateTaskInfo = 5 /*< Static and dynamic information about the task.*/
900  };
901 
903  enum
904  {
905  kMPTaskPropagate = 0, /*< The exception is propagated.*/
906  kMPTaskResumeStep = 1, /*< The task is resumed and single step is enabled.*/
907  kMPTaskResumeBranch =
908  2, /*< The task is resumed and branch stepping is enabled.*/
909  kMPTaskResumeMask = 0x0000, /*< The task is resumed.*/
910  kMPTaskPropagateMask =
911  1 << kMPTaskPropagate, /*< The exception is propagated.*/
912  kMPTaskResumeStepMask =
913  1
914  << kMPTaskResumeStep, /*< The task is resumed and single step is enabled.*/
915  kMPTaskResumeBranchMask =
916  1 << kMPTaskResumeBranch /*< The task is resumed and branch stepping is
917  enabled.*/
918  };
919 
921  enum
922  {
923  kMPTaskBlocked = 0, /*< Task is blocked (queued on resource)*/
924  kMPTaskReady = 1, /*< Task is runnable*/
925  kMPTaskRunning = 2 /*< Task is running*/
926  };
927 
928  /*< For kMPTaskStateTaskInfo, the version of the MPTaskInfo structure
929  requested.*/
930  enum
931  {
932  kMPTaskInfoVersion = 3
933  };
934 
943  struct MPTaskInfo
944  {
945  PBVersion version; /*< Version 3 of the data structure requested*/
946 
947  OSType name; /*< Task name*/
948 
949  OSType queueName; /*< Task's queue owner name*/
950  UInt16 runState; /*< Running, ready, blocked*/
951  UInt16 lastCPU; /*< Address of CPU where task previously ran*/
952  UInt32 weight; /*< Processing weight: 1 - 10,000*/
953 
954  MPProcessID processID; /*< Owning process ID*/
955 
956  AbsoluteTime cpuTime; /*< Accumulated task time*/
957  AbsoluteTime schedTime; /*< Time when last scheduled*/
958  AbsoluteTime creationTime; /*< Time when task created*/
959 
960  ItemCount codePageFaults; /*< Page faults from code execution*/
961  ItemCount dataPageFaults; /*< Page faults from data access*/
962  ItemCount preemptions; /*< Number of times task was preempted*/
963 
964  MPCpuID cpuID; /*< ID of CPU where task previously ran.*/
965  MPOpaqueID blockedObject; /*< ID of blocked object.*/
966  MPAddressSpaceID spaceID; /*< Address space ID of this task.*/
967 
968  LogicalAddress stackBase; /*< Base of stack (lowest address).*/
969  LogicalAddress stackLimit; /*< Stack limit (highest address).*/
970  LogicalAddress stackCurr; /*< Current stack address.*/
971  };
972 
973  typedef struct MPTaskInfo MPTaskInfo;
974 
983  OSStatus MPSetExceptionHandler(MPTaskID task, MPQueueID exceptionQ);
984 
993  OSStatus MPDisposeTaskException(MPTaskID task, OptionBits action);
994 
1005  OSStatus MPExtractTaskState(MPTaskID task, MPTaskStateKind kind, void *info);
1006 
1017  OSStatus MPSetTaskState(MPTaskID task, MPTaskStateKind kind, void *info);
1018 
1027  OSStatus MPThrowException(MPTaskID task, MPExceptionKind kind);
1028 
1029  typedef UInt32 MPDebuggerLevel;
1030  enum
1031  {
1032  kMPLowLevelDebugger = 0x00000000, /*< MacsBug-like*/
1033  kMPMidLevelDebugger = 0x10000000, /*< Jasik-like*/
1034  kMPHighLevelDebugger = 0x20000000 /*< Metrowerks-like*/
1035  };
1036 
1045  OSStatus MPRegisterDebugger(MPQueueID queue, MPDebuggerLevel level);
1046 
1055  OSStatus MPUnregisterDebugger(MPQueueID queue);
1056 
1061  typedef CALLBACK_API_C(void *, MPRemoteProcedure)(void *parameter);
1062 
1063  typedef UInt8 MPRemoteContext;
1064  enum
1065  {
1066  kMPAnyRemoteContext = 0,
1067  kMPOwningProcessRemoteContext = 1,
1068  kMPInterruptRemoteContext = 2,
1069  kMPAsyncInterruptRemoteContext = 3
1070  };
1071 
1082  void *MPRemoteCall(MPRemoteProcedure remoteProc, void *parameter,
1083  MPRemoteContext context);
1084 
1097 
1098  typedef CALLBACK_API_C(Boolean, MPIsFullyInitializedProc)(void);
1099 #define kMPUnresolvedCFragSymbolAddress 0
1100 #define MPLibraryIsLoaded() \
1101  (((UInt32)_MPIsFullyInitialized != \
1102  (UInt32)kMPUnresolvedCFragSymbolAddress) && \
1103  (_MPIsFullyInitialized()))
1104 
1117  void _MPLibraryVersion(const char **versionCString, /*< can be NULL */
1118  UInt32 *major, /*< can be NULL */
1119  UInt32 *minor, /*< can be NULL */
1120  UInt32 *release, /*< can be NULL */
1121  UInt32 *revision); /*< can be NULL */
1122 
1130 #if CALL_NOT_IN_CARBON
1131 #if CALL_NOT_IN_CARBON
1142  LogicalAddress _MPAllocateSys(ByteCount size);
1143 
1154  void *_MPRPC(MPRemoteProcedure remoteProc, void *parameter);
1155 
1165 
1166 #endif /* CALL_NOT_IN_CARBON */
1167 
1168 #endif /* CALL_NOT_IN_CARBON */
1169 
1178  Boolean _MPLibraryIsCompatible(const char *versionCString, UInt32 major, UInt32 minor,
1179  UInt32 release, UInt32 revision);
1180 
1181 #define MPRPC _MPRPC
1182 #define MPTaskIsToolboxSafe _MPTaskIsToolboxSafe
1183 
1188 #if CALL_NOT_IN_CARBON
1189 #ifndef MPIncludeDefunctServices
1190 #define MPIncludeDefunctServices 1
1191 #endif /* !defined(MPIncludeDefunctServices) */
1192 
1193 #if MPIncludeDefunctServices
1194 #if CALL_NOT_IN_CARBON
1203  void _MPDebugStr(ConstStr255Param msg);
1204 
1213  StringPtr _MPStatusPString(OSStatus status);
1214 
1223  const char *_MPStatusCString(OSStatus status);
1224 
1225 #endif /* CALL_NOT_IN_CARBON */
1226 
1227 #include <stdarg.h>
1228  typedef CALLBACK_API_C(void, MPPrintfHandler)(MPTaskID taskID,
1229  const char *format, va_list args);
1230 #if CALL_NOT_IN_CARBON
1239  void _MPInitializePrintf(MPPrintfHandler pfn);
1240 
1249  void _MPPrintf(const char *format, ...);
1250 
1251 #endif /* CALL_NOT_IN_CARBON */
1252 
1253 #endif /* MPIncludeDefunctServices */
1254 
1255 #endif /* CALL_NOT_IN_CARBON */
1256 
1257 #if PRAGMA_STRUCT_ALIGN
1258 #pragma options align = reset
1259 #elif PRAGMA_STRUCT_PACKPUSH
1260 #pragma pack(pop)
1261 #elif PRAGMA_STRUCT_PACK
1262 #pragma pack()
1263 #endif
1264 
1265 #ifdef PRAGMA_IMPORT_OFF
1266 #pragma import off
1267 #elif PRAGMA_IMPORT
1268 #pragma import reset
1269 #endif
1270 
1271 #ifdef __cplusplus
1272 }
1273 #endif
1274 
1275 #endif /* __MULTIPROCESSING__ */
1276 
1312 {
1313 };
1314 
1372 {
1373 };
Basic Macintosh data types.
unsigned char * StringPtr
Definition: MacTypes.h:477
unsigned char Boolean
Definition: MacTypes.h:318
OSStatus MPNotifyQueue(MPQueueID queue, void *param1, void *param2, void *param3)
Boolean MPTaskIsPreemptive(MPTaskID taskID)
void _MPInitializePrintf(MPPrintfHandler pfn)
OSStatus MPExtractTaskState(MPTaskID task, MPTaskStateKind kind, void *info)
@ kMPNoID
Definition: Multiprocessing.h:244
ItemCount MPProcessorsScheduled(void)
OSStatus MPWaitForEvent(MPEventID event, MPEventFlags *flags, Duration timeout)
OSStatus MPModifyNotification(MPNotificationID notificationID, MPOpaqueID anID, void *notifyParam1, void *notifyParam2, void *notifyParam3)
const char * _MPStatusCString(OSStatus status)
Boolean _MPTaskIsToolboxSafe(MPTaskID task)
OSStatus MPModifyNotificationParameters(MPNotificationID notificationID, MPOpaqueIDClass kind, void *notifyParam1, void *notifyParam2, void *notifyParam3)
OSStatus MPDeleteSemaphore(MPSemaphoreID semaphore)
void MPBlockClear(LogicalAddress address, ByteCount size)
void MPDataToCode(LogicalAddress address, ByteCount size)
OSStatus MPDisposeTaskException(MPTaskID task, OptionBits action)
OSStatus MPCreateSemaphore(MPSemaphoreCount maximumValue, MPSemaphoreCount initialValue, MPSemaphoreID *semaphore)
OSStatus MPDelayUntil(AbsoluteTime *expirationTime)
OSStatus MPCancelTimer(MPTimerID timerID, AbsoluteTime *timeRemaining)
LogicalAddress MPAllocateAligned(ByteCount size, UInt8 alignment, OptionBits options)
Boolean _MPIsFullyInitialized(void)
OSStatus MPDeleteNotification(MPNotificationID notificationID)
void MPExit(OSStatus status)
OSStatus MPSetEvent(MPEventID event, MPEventFlags flags)
OSStatus MPSetTimerNotify(MPTimerID timerID, MPOpaqueID anID, void *notifyParam1, void *notifyParam2, void *notifyParam3)
void * MPRemoteCall(MPRemoteProcedure remoteProc, void *parameter, MPRemoteContext context)
OSStatus MPAllocateTaskStorageIndex(TaskStorageIndex *index)
OSStatus MPExitCriticalRegion(MPCriticalRegionID criticalRegion)
ItemCount MPProcessors(void)
OSStatus MPCreateNotification(MPNotificationID *notificationID)
OSStatus MPSetTaskState(MPTaskID task, MPTaskStateKind kind, void *info)
OSStatus MPDelayUntilSys(AbsoluteTime *expirationTime)
OSStatus MPCreateQueue(MPQueueID *queue)
Boolean _MPLibraryIsCompatible(const char *versionCString, UInt32 major, UInt32 minor, UInt32 release, UInt32 revision)
OSStatus MPSetTaskType(MPTaskID task, OSType taskType)
LogicalAddress MPAllocate(ByteCount size)
void _MPDebugStr(ConstStr255Param msg)
OSStatus MPDeleteCriticalRegion(MPCriticalRegionID criticalRegion)
OSStatus MPSetTaskWeight(MPTaskID task, MPTaskWeight weight)
OSStatus MPRegisterDebugger(MPQueueID queue, MPDebuggerLevel level)
OSStatus MPSetTaskStorageValue(TaskStorageIndex index, TaskStorageValue value)
OSStatus MPArmTimer(MPTimerID timerID, AbsoluteTime *expirationTime, OptionBits options)
ByteCount MPGetAllocatedBlockSize(LogicalAddress object)
OSStatus MPDeleteQueue(MPQueueID queue)
OSStatus MPSignalSemaphore(MPSemaphoreID semaphore)
OSStatus MPWaitOnQueue(MPQueueID queue, void **param1, void **param2, void **param3, Duration timeout)
OSStatus MPDeleteEvent(MPEventID event)
void MPFree(LogicalAddress object)
OSStatus MPUnregisterDebugger(MPQueueID queue)
OSStatus MPDeallocateTaskStorageIndex(TaskStorageIndex index)
OSStatus MPThrowException(MPTaskID task, MPExceptionKind kind)
OSStatus MPTerminateTask(MPTaskID task, OSStatus terminationStatus)
OSStatus MPCreateCriticalRegion(MPCriticalRegionID *criticalRegion)
OSStatus MPEnterCriticalRegion(MPCriticalRegionID criticalRegion, Duration timeout)
OSStatus MPCreateEvent(MPEventID *event)
TaskStorageValue MPGetTaskStorageValue(TaskStorageIndex index)
OSStatus MPCreateTimer(MPTimerID *timerID)
OSStatus MPWaitOnSemaphore(MPSemaphoreID semaphore, Duration timeout)
OSStatus MPCreateTask(TaskProc entryPoint, void *parameter, ByteCount stackSize, MPQueueID notifyQueue, void *terminationParameter1, void *terminationParameter2, MPTaskOptions options, MPTaskID *task)
OSStatus MPSetQueueReserve(MPQueueID queue, ItemCount count)
LogicalAddress _MPAllocateSys(ByteCount size)
StringPtr _MPStatusPString(OSStatus status)
void _MPLibraryVersion(const char **versionCString, UInt32 *major, UInt32 *minor, UInt32 *release, UInt32 *revision)
@ kMPCreateTaskTakesAllExceptionsMask
Definition: Multiprocessing.h:302
MPTaskID MPCurrentTaskID(void)
void MPYield(void)
OSStatus MPSetExceptionHandler(MPTaskID task, MPQueueID exceptionQ)
OSStatus MPDeleteTimer(MPTimerID timerID)
void MPBlockCopy(LogicalAddress source, LogicalAddress destination, ByteCount size)
OSStatus MPCauseNotification(MPNotificationID notificationID)
void _MPPrintf(const char *format,...)
void * _MPRPC(MPRemoteProcedure remoteProc, void *parameter)
Definition: Multiprocessing.h:1312
Definition: Events.h:224
Definition: Multiprocessing.h:944
Definition: Multiprocessing.h:1372
Definition: MacTypes.h:110