Table C-1 Multiprocessing Services documentation revision history
Version
|
Notes
|
April 30, 1999
|
Initial public release. The following changes were made from the previous (seed draft) version:
Added
Introduction
About Multitasking on the Mac OS
and
Using Multiprocessing Services
which include introductory information, conceptual information, programming discussions, and sample code.
|
|
Added versioning information to functions, data types, and constants in
Multiprocessing Services Reference
|
|
Added discussion and parameter information to
MPTaskIsPreemptive
indicating how and why you can specify
kInvalidID
to determine the preemptiveness of the current task. Also added Version Notes section.
|
|
Correction in
MPWaitOnQueue
,
MPWaitOnSemaphore
,
MPWaitForEvent
, and
MPEnterCriticalRegion
: When calling from a cooperative task, you should specify only
kDurationImmediate
waits; others are allowable, but they will cause the task to block.
|
|
Added information stating that setting event bits in
MPSetEvent
and obtaining and clearing and event group in
MPWaitForEvent
are atomic operations. For example, bits cannot be set between when a task obtains an event group and when the event group is cleared, so no data can be lost.
|
|
Changed wording in
MPDelayUntil
to clarify that you must indicate a specific time to unblock the task, not a duration.
|
|
Changed wording for
MPAllocateTaskStorageIndex
and
MPDeallocateTaskStorageIndex
to indicate that these functions do not actually allocate or deallocate memory.
|
|
Added disclaimer to
MPThrowException
indicating that you should throw an exception to a task to stop it only if you are debugging and plan to examine the state of the task. Otherwise, you should block the task using a traditional notification method (such as a message queue).
|
|
Modified discussion of
MPSetExceptionHandler
to indicate the format of the message sent to the exception handler.
Discussion of informative messages in
MPRegisterDebugger
removed to reflect status as of version 2.0.
|
|
Added information to
MPExtractTaskState
and
MPSetTaskState
indicating that attempting to set or read state information for a nonsuspended task returns the error
kMPInsufficientResourcesErr
.
Added information to
MPSetTaskState
and
Task State Constants
: the exception state information and some machine registers (MRS, ExceptKind, DSISR, and DAR) are read-only. Attempting to set the exception state information will return an error. Attempts to change the MRS, ExceptKind, DSISR, and DAR registers will simply have no effect.
|
|
Discussion in
MPRemoteCall
modifed to reflect this clarification: If you specify that the function should execute in the same context that owns the task, the function has access to data available to the main application (just as if the application had called the function). However, the function cannot execute until the owning context becomes active (and then not until the application calls
WaitNextEvent
).
Atomic memory operations mentioned in
MPRemoteCall
and
Making Remote Procedure Calls
are now located in
InterfaceLib
, not the Driver Services Library.
|
|
Data types
MPAddressSpaceID
and
MPCpuID
removed to reflect status as of version 2.0.
|
|
Clarified that you can use the constants in
Timer Duration Constants
to specify any number of waiting times by adding multipliers.
|
|
Correction in
Memory Allocation Alignment Constants
: CPU interlock instruction
swarx
should be
stwcx
.
|
|
Specified the
MachineExceptions.h
structures that correspond to the state information constants in
Task State Constants
Removed nonbitmask values (
kMPTaskPropagate
,
kMPTaskResumeStep
, and
kMPTaskResumeBranch
) and descriptions from
Task Exception Disposal Constants
.
|
Feb. 26, 1999
|
First seed draft release
|