Table D-1 Multiprocessing Services documentation revision history
Version
|
Notes
|
November 10, 1999
|
Revised for Multiprocessing Services 2.1. The following changes were made from the 2.0 version:
|
|
Added
Gestalt Constants
, which you can use to determine the availability of preemptively safe Mac OS system software functions, and added a list of these functions in
Preemptive Task-Safe Mac OS System Software Functions
. Changed text in
Criteria for Creating Tasks
and
Making Remote Procedure Calls
to reflect these additions.
|
|
Added new functions: MPGetNextCpuID
and MPGetNextTaskID
.
|
|
Added new kernel notification functions: MPCreateNotification
, MPCreateNotification
, MPModifyNotification
, and MPCauseNotification
. Added
Kernel Notifications
section to Chapter
.
|
|
Added new options for MPCreateTask
. See
Task Creation Options
for details.
|
|
Added new task information structure, MPTaskInfo
, for use with MPExtractTaskState
.
|
|
Added new task run state constants to be used with the new MPTaskInfo
structure. See
Task Run State Constants
for details.
|
|
Added glossary entries for coherence groups and kernel notifications.
|
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
|
|
|
|
|
|
|
|
|