Mac OS 9
Multiprocessing.h File Reference

Multiprocessing interfaces. More...

#include <MacTypes.h>
#include <stdarg.h>

Go to the source code of this file.

Data Structures

struct  MPTaskInfo
 
struct  CheckingAPIAvailability
 
struct  TaskStateWarning
 

Functions

Process/Processor Services
ItemCount MPProcessors (void)
 
ItemCount MPProcessorsScheduled (void)
 
Notification Services (API)
OSStatus MPCreateNotification (MPNotificationID *notificationID)
 
OSStatus MPDeleteNotification (MPNotificationID notificationID)
 
OSStatus MPModifyNotification (MPNotificationID notificationID, MPOpaqueID anID, void *notifyParam1, void *notifyParam2, void *notifyParam3)
 
OSStatus MPModifyNotificationParameters (MPNotificationID notificationID, MPOpaqueIDClass kind, void *notifyParam1, void *notifyParam2, void *notifyParam3)
 
OSStatus MPCauseNotification (MPNotificationID notificationID)
 
Miscellaneous Services
void _MPLibraryVersion (const char **versionCString, UInt32 *major, UInt32 *minor, UInt32 *release, UInt32 *revision)
 

General Types and Constants

#define MPCopyrightNotice   "Copyright © 1995-2001 Apple Computer, Inc.\n"
 
#define MPLibraryName   "MPLibrary"
 
#define MPLibraryCName   MPLibraryName
 
#define MPLibraryPName   "\p" MPLibraryName
 
#define MP_API_Version   "2.4"
 
enum  { MPLibrary_MajorVersion , MPLibrary_MinorVersion , MPLibrary_Release = 1 , MPLibrary_DevelopmentRevision = 1 }
 
enum  {
  kOpaqueAnyID = 0 , kOpaqueProcessID = 1 , kOpaqueTaskID = 2 , kOpaqueTimerID = 3 ,
  kOpaqueQueueID = 4 , kOpaqueSemaphoreID = 5 , kOpaqueCriticalRegionID = 6 , kOpaqueCpuID = 7 ,
  kOpaqueAddressSpaceID = 8 , kOpaqueEventID = 9 , kOpaqueCoherenceID = 10 , kOpaqueAreaID = 11 ,
  kOpaqueNotificationID = 12 , kOpaqueConsoleID = 13
}
 
enum  { kMPNoID = kInvalidID }
 
enum  { kDurationImmediate = 0L , kDurationForever = 0x7FFFFFFF , kDurationMillisecond = 1 , kDurationMicrosecond = -1 }
 
typedef struct OpaqueMPProcessID * MPProcessID
 
typedef struct OpaqueMPTaskID * MPTaskID
 
typedef struct OpaqueMPQueueID * MPQueueID
 
typedef struct OpaqueMPSemaphoreID * MPSemaphoreID
 
typedef struct OpaqueMPCriticalRegionID * MPCriticalRegionID
 
typedef struct OpaqueMPTimerID * MPTimerID
 
typedef struct OpaqueMPEventID * MPEventID
 
typedef struct OpaqueMPAddressSpaceID * MPAddressSpaceID
 
typedef struct OpaqueMPNotificationID * MPNotificationID
 
typedef struct OpaqueMPCoherenceID * MPCoherenceID
 
typedef struct OpaqueMPCpuID * MPCpuID
 
typedef struct OpaqueMPAreaID * MPAreaID
 
typedef struct OpaqueMPConsoleID * MPConsoleID
 
typedef struct OpaqueMPOpaqueID * MPOpaqueID
 
typedef UInt32 MPOpaqueIDClass
 
typedef OptionBits MPTaskOptions
 
typedef UInt32 TaskStorageIndex
 
typedef UInt32 TaskStorageValue
 
typedef ItemCount MPSemaphoreCount
 
typedef UInt32 MPTaskWeight
 
typedef UInt32 MPEventFlags
 
typedef UInt32 MPExceptionKind
 
typedef UInt32 MPTaskStateKind
 
typedef UInt32 MPPageSizeClass
 

Synchronization Services

#define MPCreateBinarySemaphore(semaphore)   MPCreateSemaphore(1, 1, (semaphore))
 
OSStatus MPCreateQueue (MPQueueID *queue)
 
OSStatus MPDeleteQueue (MPQueueID queue)
 
OSStatus MPNotifyQueue (MPQueueID queue, void *param1, void *param2, void *param3)
 
OSStatus MPWaitOnQueue (MPQueueID queue, void **param1, void **param2, void **param3, Duration timeout)
 
OSStatus MPSetQueueReserve (MPQueueID queue, ItemCount count)
 
OSStatus MPCreateSemaphore (MPSemaphoreCount maximumValue, MPSemaphoreCount initialValue, MPSemaphoreID *semaphore)
 
OSStatus MPDeleteSemaphore (MPSemaphoreID semaphore)
 
OSStatus MPSignalSemaphore (MPSemaphoreID semaphore)
 
OSStatus MPWaitOnSemaphore (MPSemaphoreID semaphore, Duration timeout)
 
OSStatus MPCreateCriticalRegion (MPCriticalRegionID *criticalRegion)
 
OSStatus MPDeleteCriticalRegion (MPCriticalRegionID criticalRegion)
 
OSStatus MPEnterCriticalRegion (MPCriticalRegionID criticalRegion, Duration timeout)
 
OSStatus MPExitCriticalRegion (MPCriticalRegionID criticalRegion)
 
OSStatus MPCreateEvent (MPEventID *event)
 
OSStatus MPDeleteEvent (MPEventID event)
 
OSStatus MPSetEvent (MPEventID event, MPEventFlags flags)
 
OSStatus MPWaitForEvent (MPEventID event, MPEventFlags *flags, Duration timeout)
 

Remote Call Services

#define kMPUnresolvedCFragSymbolAddress   0
 
#define MPLibraryIsLoaded()
 
enum  { kMPAnyRemoteContext = 0 , kMPOwningProcessRemoteContext = 1 , kMPInterruptRemoteContext = 2 , kMPAsyncInterruptRemoteContext = 3 }
 
typedef UInt8 MPRemoteContext
 
typedef CALLBACK_API_C (void *, MPRemoteProcedure)(void *parameter)
 
void * MPRemoteCall (MPRemoteProcedure remoteProc, void *parameter, MPRemoteContext context)
 
Boolean _MPIsFullyInitialized (void)
 
typedef CALLBACK_API_C (Boolean, MPIsFullyInitializedProc)(void)
 

Unofficial Services

Warning
These services are not part of the officially documented multiprocessing API. They may not be avaliable in future versions of Mac OS multiprocessing support, or in environments that have a different underlying OS architecture such as Mac OS on top of a microkernel, the Mac OS Blue Box under Mac OS X, native MP support in Mac OS X, etc.
#define MPRPC   _MPRPC
 
#define MPTaskIsToolboxSafe   _MPTaskIsToolboxSafe
 
LogicalAddress _MPAllocateSys (ByteCount size)
 
void * _MPRPC (MPRemoteProcedure remoteProc, void *parameter)
 
Boolean _MPTaskIsToolboxSafe (MPTaskID task)
 
Boolean _MPLibraryIsCompatible (const char *versionCString, UInt32 major, UInt32 minor, UInt32 release, UInt32 revision)
 

Defunct Services

#define MPIncludeDefunctServices   1
 
typedef const char * format
 
typedef const char va_list args
 
void _MPDebugStr (ConstStr255Param msg)
 
StringPtr _MPStatusPString (OSStatus status)
 
const char * _MPStatusCString (OSStatus status)
 
typedef CALLBACK_API_C (void, MPPrintfHandler)(MPTaskID taskID
 
void _MPInitializePrintf (MPPrintfHandler pfn)
 
void _MPPrintf (const char *format,...)
 

Tasking Services

enum  { kMPCreateTaskTakesAllExceptionsMask = 1L << 1 , kMPCreateTaskNotDebuggableMask = 1L << 2 , kMPCreateTaskValidOptionsMask }
 
typedef CALLBACK_API_C (OSStatus, TaskProc)(void *parameter)
 
OSStatus MPCreateTask (TaskProc entryPoint, void *parameter, ByteCount stackSize, MPQueueID notifyQueue, void *terminationParameter1, void *terminationParameter2, MPTaskOptions options, MPTaskID *task)
 
OSStatus MPTerminateTask (MPTaskID task, OSStatus terminationStatus)
 
OSStatus MPSetTaskWeight (MPTaskID task, MPTaskWeight weight)
 
Boolean MPTaskIsPreemptive (MPTaskID taskID)
 
void MPExit (OSStatus status)
 
void MPYield (void)
 
MPTaskID MPCurrentTaskID (void)
 
OSStatus MPSetTaskType (MPTaskID task, OSType taskType)
 
OSStatus MPAllocateTaskStorageIndex (TaskStorageIndex *index)
 
OSStatus MPDeallocateTaskStorageIndex (TaskStorageIndex index)
 
OSStatus MPSetTaskStorageValue (TaskStorageIndex index, TaskStorageValue value)
 
TaskStorageValue MPGetTaskStorageValue (TaskStorageIndex index)
 

Timer Services

Warning
The timer services are new in version 2.0.
enum  { kMPPreserveTimerIDMask = 1L << 0 , kMPTimeIsDeltaMask = 1L << 1 , kMPTimeIsDurationMask = 1L << 2 }
 
OSStatus MPDelayUntil (AbsoluteTime *expirationTime)
 
OSStatus MPDelayUntilSys (AbsoluteTime *expirationTime)
 
OSStatus MPCreateTimer (MPTimerID *timerID)
 
OSStatus MPDeleteTimer (MPTimerID timerID)
 
OSStatus MPSetTimerNotify (MPTimerID timerID, MPOpaqueID anID, void *notifyParam1, void *notifyParam2, void *notifyParam3)
 
OSStatus MPArmTimer (MPTimerID timerID, AbsoluteTime *expirationTime, OptionBits options)
 
OSStatus MPCancelTimer (MPTimerID timerID, AbsoluteTime *timeRemaining)
 

Memory Services

enum  { kMPMaxAllocSize = 1024L * 1024 * 1024 }
 
enum  {
  kMPAllocateDefaultAligned = 0 , kMPAllocate8ByteAligned = 3 , kMPAllocate16ByteAligned = 4 , kMPAllocate32ByteAligned = 5 ,
  kMPAllocate1024ByteAligned = 10 , kMPAllocate4096ByteAligned = 12 , kMPAllocateMaxAlignment = 16 , kMPAllocateAltiVecAligned = kMPAllocate16ByteAligned ,
  kMPAllocateVMXAligned , kMPAllocateVMPageAligned = 254 , kMPAllocateInterlockAligned = 255
}
 
enum  {
  kMPAllocateClearMask = 0x0001 , kMPAllocateGloballyMask , kMPAllocateResidentMask = 0x0004 , kMPAllocateNoGrowthMask = 0x0010 ,
  kMPAllocateNoCreateMask
}
 
LogicalAddress MPAllocateAligned (ByteCount size, UInt8 alignment, OptionBits options)
 
LogicalAddress MPAllocate (ByteCount size)
 
void MPFree (LogicalAddress object)
 
ByteCount MPGetAllocatedBlockSize (LogicalAddress object)
 
void MPBlockCopy (LogicalAddress source, LogicalAddress destination, ByteCount size)
 
void MPBlockClear (LogicalAddress address, ByteCount size)
 
void MPDataToCode (LogicalAddress address, ByteCount size)
 

Exception/Debugging Services

enum  {
  kMPTaskStateRegisters = 0 , kMPTaskStateFPU = 1 , kMPTaskStateVectors = 2 , kMPTaskStateMachine = 3 ,
  kMPTaskState32BitMemoryException , kMPTaskStateTaskInfo = 5
}
 
enum  {
  kMPTaskPropagate = 0 , kMPTaskResumeStep = 1 , kMPTaskResumeBranch , kMPTaskResumeMask = 0x0000 ,
  kMPTaskPropagateMask , kMPTaskResumeStepMask , kMPTaskResumeBranchMask
}
 
enum  { kMPTaskBlocked = 0 , kMPTaskReady = 1 , kMPTaskRunning = 2 }
 
enum  { kMPTaskInfoVersion = 3 }
 
enum  { kMPLowLevelDebugger = 0x00000000 , kMPMidLevelDebugger = 0x10000000 , kMPHighLevelDebugger = 0x20000000 }
 
typedef struct MPTaskInfo MPTaskInfo
 
typedef UInt32 MPDebuggerLevel
 
OSStatus MPSetExceptionHandler (MPTaskID task, MPQueueID exceptionQ)
 
OSStatus MPDisposeTaskException (MPTaskID task, OptionBits action)
 
OSStatus MPExtractTaskState (MPTaskID task, MPTaskStateKind kind, void *info)
 
OSStatus MPSetTaskState (MPTaskID task, MPTaskStateKind kind, void *info)
 
OSStatus MPThrowException (MPTaskID task, MPExceptionKind kind)
 
OSStatus MPRegisterDebugger (MPQueueID queue, MPDebuggerLevel level)
 
OSStatus MPUnregisterDebugger (MPQueueID queue)
 

Detailed Description

Multiprocessing interfaces.

Introduced In: Multiprocessing API version 2.4, integrated NanoKernel
support
Avaliable From: Universal Interfaces 3.4.1
Copyright: © 1995-2001 DayStar Digital, Inc.

This is the header file for version 2.4 of the Mac OS multiprocessing support. This version has been totally reimplemented and has significant new services. The main goal of the reimplementation has been to transfer task management into the core operating system to provide much more reliable and more efficient operation, including on single processor machines. The memory management has also been massively improved, it is much faster and wastes much less space. New services include POSIX style per-task storage, timers with millisecond and microsecond resolutions, memory allocation at a specified alignment, and system pageable and RAM resident memory pools. See the MP API documentation for details. The old "DayStar" debugging services (whose names began with an underscore) have been removed from this header. A very few are still implemented for binary compatibility, or in cases where they happened to be exposed inappropriately. (E.g. _MPIsFullyInitialized must be called to see if the MP API is ReallyTruly© usable.) New code and recompiles of old code should avoid use of these defunct services, except for _MPIsFullyInitialized.

The following services are from the original MP API and remain supported in version 2.0: MPProcessors MPCreateTask MPTerminateTask MPCurrentTaskID

MPYield

MPExit

MPCreateQueue

MPDeleteQueue

MPNotifyQueue

MPWaitOnQueue

MPCreateSemaphore

MPCreateBinarySemaphore (In C only, a macro that calls MPCreateSemaphore.)

MPDeleteSemaphore MPSignalSemaphore MPWaitOnSemaphore

MPCreateCriticalRegion

MPDeleteCriticalRegion

MPEnterCriticalRegion

MPExitCriticalRegion

MPAllocate (Deprecated, use MPAllocateAligned for new builds.) MPFree MPBlockCopy MPLibraryIsLoaded (In C only, a macro.)

_MPIsFullyInitialized (See comments about checking for MP API availability.)

The following services are new in version 2.0:

MPProcessorsScheduled

MPSetTaskWeight

MPTaskIsPreemptive

MPAllocateTaskStorageIndex

MPDeallocateTaskStorageIndex

MPSetTaskStorageValue

MPGetTaskStorageValue

MPSetQueueReserve

MPCreateEvent

MPDeleteEvent

MPSetEvent

MPWaitForEvent

UpTime

DurationToAbsolute

AbsoluteToDuration

MPDelayUntil

MPCreateTimer

MPDeleteTimer

MPSetTimerNotify

MPArmTimer

MPCancelTimer

MPSetExceptionHandler

MPThrowException

MPDisposeTaskException

MPExtractTaskState

MPSetTaskState

MPRegisterDebugger

MPUnregisterDebugger

MPAllocateAligned (Preferred over MPAllocate.)

MPGetAllocatedBlockSize

MPBlockClear

MPDataToCode

MPRemoteCall (Preferred over _MPRPC.)

The following services are new in version 2.1:

MPCreateNotification

MPDeleteNotification

MPModifyNotification

MPCauseNotification

MPGetNextTaskID

MPGetNextCpuID

The following services are "unofficial" extensions to the original API. They are not in the multiprocessing API documentation, but were in previous versions of this header. They remain supported version 2.0. They may not be supported in other environments.

_MPRPC (Deprecated, use MPRemoteCall for new builds.)

_MPAllocateSys (Deprecated, use MPAllocateAligned for new builds.)

_MPTaskIsToolboxSafe

_MPLibraryVersion

_MPLibraryIsCompatible

The following services were in previous versions of this header for "debugging only" use. They are NOT implemented in version 2.0. For old builds they can be accessed by defining the symbol MPIncludeDefunctServices to have a nonzero value. _MPInitializePrintf _MPPrintf _MPDebugStr

_MPStatusPString

_MPStatusCString

For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/

Warning
You must properly check the availability of MP services before calling them! See the section titled "CheckingAPIAvailability".

Macro Definition Documentation

◆ MPLibraryIsLoaded

#define MPLibraryIsLoaded ( )
Value:
(((UInt32)_MPIsFullyInitialized != \
(UInt32)kMPUnresolvedCFragSymbolAddress) && \
Boolean _MPIsFullyInitialized(void)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Values for MPOpaqueIDClass.

◆ anonymous enum

anonymous enum
Enumerator
kMPNoID 
Warning
New code should use kInvalidID everywhere.

◆ anonymous enum

anonymous enum
Enumerator
kMPCreateTaskTakesAllExceptionsMask 

For MPCreateTask options

◆ anonymous enum

anonymous enum

For MPArmTimer options

◆ anonymous enum

anonymous enum

Maximum allocation request size is 1GB.

◆ anonymous enum

anonymous enum

Values for the alignment parameter to MPAllocateAligned.

◆ anonymous enum

anonymous enum

Values for the options parameter to MPAllocateAligned.

◆ anonymous enum

anonymous enum

Values for the TaskStateKind to MPExtractTaskState and MPSetTaskState.

◆ anonymous enum

anonymous enum

Option bits and numbers for MPDisposeTaskException.

◆ anonymous enum

anonymous enum

For kMPTaskStateTaskInfo, the task's runState

Function Documentation

◆ _MPAllocateSys()

LogicalAddress _MPAllocateSys ( ByteCount  size)

_MPAllocateSys()

Deprecated:
Use MPAllocateAligned instead.

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPDebugStr()

void _MPDebugStr ( ConstStr255Param  msg)

_MPDebugStr()

Availability:

Non-Carbon CFM: in MPLibraryObsolete 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPInitializePrintf()

void _MPInitializePrintf ( MPPrintfHandler  pfn)

_MPInitializePrintf()

Availability:

Non-Carbon CFM: in MPLibraryObsolete 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPIsFullyInitialized()

Boolean _MPIsFullyInitialized ( void  )

_MPIsFullyInitialized()

Warning
You must properly check the availability of MP services before calling them! See the section titled "CheckingAPIAvailability".

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ _MPLibraryIsCompatible()

Boolean _MPLibraryIsCompatible ( const char *  versionCString,
UInt32  major,
UInt32  minor,
UInt32  release,
UInt32  revision 
)

_MPLibraryIsCompatible()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ _MPLibraryVersion()

void _MPLibraryVersion ( const char **  versionCString,
UInt32 *  major,
UInt32 *  minor,
UInt32 *  release,
UInt32 *  revision 
)

_MPLibraryVersion()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ _MPPrintf()

void _MPPrintf ( const char *  format,
  ... 
)

_MPPrintf()

Availability:

Non-Carbon CFM: in MPLibraryObsolete 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPRPC()

void* _MPRPC ( MPRemoteProcedure  remoteProc,
void *  parameter 
)

_MPRPC()

Deprecated:
Use _MPRemoteCall instead.

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPStatusCString()

const char* _MPStatusCString ( OSStatus  status)

_MPStatusCString()

Availability:

Non-Carbon CFM: in MPLibraryObsolete 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPStatusPString()

StringPtr _MPStatusPString ( OSStatus  status)

_MPStatusPString()

Availability:

Non-Carbon CFM: in MPLibraryObsolete 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ _MPTaskIsToolboxSafe()

Boolean _MPTaskIsToolboxSafe ( MPTaskID  task)

_MPTaskIsToolboxSafe()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: not available
Mac OS X: not available

◆ MPAllocate()

LogicalAddress MPAllocate ( ByteCount  size)

MPAllocate()

Deprecated:
Use MPAllocateAligned instead.

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPAllocateAligned()

LogicalAddress MPAllocateAligned ( ByteCount  size,
UInt8  alignment,
OptionBits  options 
)

MPAllocateAligned()

Warning
MPAllocateAligned is new in version 2.0. Availability:
Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPAllocateTaskStorageIndex()

OSStatus MPAllocateTaskStorageIndex ( TaskStorageIndex *  index)

MPAllocateTaskStorageIndex()

Warning
The task storage services are new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPArmTimer()

OSStatus MPArmTimer ( MPTimerID  timerID,
AbsoluteTime expirationTime,
OptionBits  options 
)

MPArmTimer()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPBlockClear()

void MPBlockClear ( LogicalAddress  address,
ByteCount  size 
)

MPBlockClear()

Warning
MPBlockClear is new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPBlockCopy()

void MPBlockCopy ( LogicalAddress  source,
LogicalAddress  destination,
ByteCount  size 
)

MPBlockCopy()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCancelTimer()

OSStatus MPCancelTimer ( MPTimerID  timerID,
AbsoluteTime timeRemaining 
)

MPCancelTimer()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCauseNotification()

OSStatus MPCauseNotification ( MPNotificationID  notificationID)

MPCauseNotification()

Availability:

Non-Carbon CFM: in MPLibrary 2.1 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCreateCriticalRegion()

OSStatus MPCreateCriticalRegion ( MPCriticalRegionID *  criticalRegion)

MPCreateCriticalRegion()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCreateEvent()

OSStatus MPCreateEvent ( MPEventID *  event)

MPCreateEvent()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCreateNotification()

OSStatus MPCreateNotification ( MPNotificationID *  notificationID)

MPCreateNotification()

Availability:

Non-Carbon CFM: in MPLibrary 2.1 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCreateQueue()

OSStatus MPCreateQueue ( MPQueueID *  queue)

MPCreateQueue()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCreateSemaphore()

OSStatus MPCreateSemaphore ( MPSemaphoreCount  maximumValue,
MPSemaphoreCount  initialValue,
MPSemaphoreID *  semaphore 
)

MPCreateSemaphore()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCreateTask()

OSStatus MPCreateTask ( TaskProc  entryPoint,
void *  parameter,
ByteCount  stackSize,
MPQueueID  notifyQueue,
void *  terminationParameter1,
void *  terminationParameter2,
MPTaskOptions  options,
MPTaskID *  task 
)

MPCreateTask()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later
Parameters
taskcan be NULL

◆ MPCreateTimer()

OSStatus MPCreateTimer ( MPTimerID *  timerID)

MPCreateTimer()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPCurrentTaskID()

MPTaskID MPCurrentTaskID ( void  )

MPCurrentTaskID()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDataToCode()

void MPDataToCode ( LogicalAddress  address,
ByteCount  size 
)

MPDataToCode()

Warning
MPDataToCode is new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDeallocateTaskStorageIndex()

OSStatus MPDeallocateTaskStorageIndex ( TaskStorageIndex  index)

MPDeallocateTaskStorageIndex()

Warning
The task storage services are new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDelayUntil()

OSStatus MPDelayUntil ( AbsoluteTime expirationTime)

MPDelayUntil()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDelayUntilSys()

OSStatus MPDelayUntilSys ( AbsoluteTime expirationTime)

MPDelayUntilSys()

Availability:

Non-Carbon CFM: in MPLibrary 2.1 and later
Carbon Lib: not available
Mac OS X: not available

◆ MPDeleteCriticalRegion()

OSStatus MPDeleteCriticalRegion ( MPCriticalRegionID  criticalRegion)

MPDeleteCriticalRegion()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDeleteEvent()

OSStatus MPDeleteEvent ( MPEventID  event)

MPDeleteEvent()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDeleteNotification()

OSStatus MPDeleteNotification ( MPNotificationID  notificationID)

MPDeleteNotification()

Availability:

Non-Carbon CFM: in MPLibrary 2.1 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDeleteQueue()

OSStatus MPDeleteQueue ( MPQueueID  queue)

MPDeleteQueue()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDeleteSemaphore()

OSStatus MPDeleteSemaphore ( MPSemaphoreID  semaphore)

MPDeleteSemaphore()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDeleteTimer()

OSStatus MPDeleteTimer ( MPTimerID  timerID)

MPDeleteTimer()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPDisposeTaskException()

OSStatus MPDisposeTaskException ( MPTaskID  task,
OptionBits  action 
)

MPDisposeTaskException()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPEnterCriticalRegion()

OSStatus MPEnterCriticalRegion ( MPCriticalRegionID  criticalRegion,
Duration  timeout 
)

MPEnterCriticalRegion()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPExit()

void MPExit ( OSStatus  status)

MPExit()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPExitCriticalRegion()

OSStatus MPExitCriticalRegion ( MPCriticalRegionID  criticalRegion)

MPExitCriticalRegion()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPExtractTaskState()

OSStatus MPExtractTaskState ( MPTaskID  task,
MPTaskStateKind  kind,
void *  info 
)

MPExtractTaskState()

Warning
See Task State Warning

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPFree()

void MPFree ( LogicalAddress  object)

MPFree()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPGetAllocatedBlockSize()

ByteCount MPGetAllocatedBlockSize ( LogicalAddress  object)

MPGetAllocatedBlockSize()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPGetTaskStorageValue()

TaskStorageValue MPGetTaskStorageValue ( TaskStorageIndex  index)

MPGetTaskStorageValue()

Warning
The task storage services are new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPModifyNotification()

OSStatus MPModifyNotification ( MPNotificationID  notificationID,
MPOpaqueID  anID,
void *  notifyParam1,
void *  notifyParam2,
void *  notifyParam3 
)

MPModifyNotification()

Availability:

Non-Carbon CFM: in MPLibrary 2.1 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPModifyNotificationParameters()

OSStatus MPModifyNotificationParameters ( MPNotificationID  notificationID,
MPOpaqueIDClass  kind,
void *  notifyParam1,
void *  notifyParam2,
void *  notifyParam3 
)

MPModifyNotificationParameters()

Availability:

Non-Carbon CFM: in MPLibrary 2.3 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPNotifyQueue()

OSStatus MPNotifyQueue ( MPQueueID  queue,
void *  param1,
void *  param2,
void *  param3 
)

MPNotifyQueue()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPProcessors()

ItemCount MPProcessors ( void  )

MPProcessors()

The physical total number of processors.

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPProcessorsScheduled()

ItemCount MPProcessorsScheduled ( void  )

MPProcessorsScheduled()

Processors currently in use.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPRegisterDebugger()

OSStatus MPRegisterDebugger ( MPQueueID  queue,
MPDebuggerLevel  level 
)

MPRegisterDebugger()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPRemoteCall()

void* MPRemoteCall ( MPRemoteProcedure  remoteProc,
void *  parameter,
MPRemoteContext  context 
)

MPRemoteCall()

Warning
MPRemoteCall is new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetEvent()

OSStatus MPSetEvent ( MPEventID  event,
MPEventFlags  flags 
)

MPSetEvent()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetExceptionHandler()

OSStatus MPSetExceptionHandler ( MPTaskID  task,
MPQueueID  exceptionQ 
)

MPSetExceptionHandler()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetQueueReserve()

OSStatus MPSetQueueReserve ( MPQueueID  queue,
ItemCount  count 
)

MPSetQueueReserve()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetTaskState()

OSStatus MPSetTaskState ( MPTaskID  task,
MPTaskStateKind  kind,
void *  info 
)

MPSetTaskState()

Warning
See Task State Warning

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetTaskStorageValue()

OSStatus MPSetTaskStorageValue ( TaskStorageIndex  index,
TaskStorageValue  value 
)

MPSetTaskStorageValue()

Warning
The task storage services are new in version 2.0.

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetTaskType()

OSStatus MPSetTaskType ( MPTaskID  task,
OSType  taskType 
)

MPSetTaskType()

Availability:

Non-Carbon CFM: in MPLibrary 2.3 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetTaskWeight()

OSStatus MPSetTaskWeight ( MPTaskID  task,
MPTaskWeight  weight 
)

MPSetTaskWeight()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSetTimerNotify()

OSStatus MPSetTimerNotify ( MPTimerID  timerID,
MPOpaqueID  anID,
void *  notifyParam1,
void *  notifyParam2,
void *  notifyParam3 
)

MPSetTimerNotify()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPSignalSemaphore()

OSStatus MPSignalSemaphore ( MPSemaphoreID  semaphore)

MPSignalSemaphore()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPTaskIsPreemptive()

Boolean MPTaskIsPreemptive ( MPTaskID  taskID)

MPTaskIsPreemptive()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later
Parameters
taskIDMay be kInvalidID.

◆ MPTerminateTask()

OSStatus MPTerminateTask ( MPTaskID  task,
OSStatus  terminationStatus 
)

MPTerminateTask()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPThrowException()

OSStatus MPThrowException ( MPTaskID  task,
MPExceptionKind  kind 
)

MPThrowException()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPUnregisterDebugger()

OSStatus MPUnregisterDebugger ( MPQueueID  queue)

MPUnregisterDebugger()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPWaitForEvent()

OSStatus MPWaitForEvent ( MPEventID  event,
MPEventFlags *  flags,
Duration  timeout 
)

MPWaitForEvent()

Availability:

Non-Carbon CFM: in MPLibrary 2.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later
Parameters
flagscan be NULL

◆ MPWaitOnQueue()

OSStatus MPWaitOnQueue ( MPQueueID  queue,
void **  param1,
void **  param2,
void **  param3,
Duration  timeout 
)

MPWaitOnQueue()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later
Parameters
param1can be NULL
param2can be NULL
param3can be NULL

◆ MPWaitOnSemaphore()

OSStatus MPWaitOnSemaphore ( MPSemaphoreID  semaphore,
Duration  timeout 
)

MPWaitOnSemaphore()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later

◆ MPYield()

void MPYield ( void  )

MPYield()

Availability:

Non-Carbon CFM: in MPLibrary 1.0 and later
Carbon Lib: in CarbonLib 1.0 and later
Mac OS X: in version 10.0 and later