Multiprocessing.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:36k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       Multiprocessing.h
  3.  
  4.      Contains:   Multiprocessing interfaces
  5.  
  6.      Version:    Technology: Multiprocessing API version 2.0, integrated nanokernel support
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1995-2001 DayStar Digital, Inc.
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. /*
  18.    ===========================================================================================
  19.    *** WARNING: You must properly check the availability of MP services before calling them!
  20.    See the section titled "Checking API Availability".
  21.    ===========================================================================================
  22. */
  23. #ifndef __MULTIPROCESSING__
  24. #define __MULTIPROCESSING__
  25. #ifndef __MACTYPES__
  26. #include "MacTypes.h"
  27. #endif
  28. #ifndef __CODEFRAGMENTS__
  29. #include "CodeFragments.h"
  30. #endif
  31. #ifndef __DRIVERSERVICES__
  32. #include "DriverServices.h"
  33. #endif
  34. #if PRAGMA_ONCE
  35. #pragma once
  36. #endif
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40. #if PRAGMA_IMPORT
  41. #pragma import on
  42. #endif
  43. #if PRAGMA_STRUCT_ALIGN
  44.     #pragma options align=power
  45. #elif PRAGMA_STRUCT_PACKPUSH
  46.     #pragma pack(push, 2)
  47. #elif PRAGMA_STRUCT_PACK
  48.     #pragma pack(2)
  49. #endif
  50. /*
  51.    ===========================================================================================
  52.    This is the header file for version 2.0 of the Mac OS multiprocessing support.  This version
  53.    has been totally reimplemented and has significant new services.  The main goal of the
  54.    reimplementation has been to transfer task management into the core operating system to provide
  55.    much more reliable and more efficient operation, including on single processor machines.
  56.    The memory management has also been massively improved, it is much faster and wastes much
  57.    less space.  New services include POSIX style per-task storage, timers with millisecond and
  58.    microsecond resolutions, memory allocation at a specified alignment, and system pageable
  59.    and RAM resident memory pools.  See the MP API documentation for details.
  60.    The old "DayStar" debugging services (whose names began with an underscore) have been
  61.    removed from this header.  A very few are still implemented for binary compatibility, or in
  62.    cases where they happened to be exposed inappropriately.  (E.g. _MPIsFullyInitialized must
  63.    be called to see if the MP API is ReallyTruly(tm) usable.)  New code and recompiles of old
  64.    code should avoid use of these defunct services, except for _MPIsFullyInitialized.
  65.    ===========================================================================================
  66. */
  67. /*
  68.    ===========================================================================================
  69.    The following services are from the original MP API and remain supported in version 2.0:
  70.     MPProcessors
  71.     MPCreateTask
  72.     MPTerminateTask
  73.     MPCurrentTaskID
  74.     MPYield
  75.     MPExit
  76.     MPCreateQueue
  77.     MPDeleteQueue
  78.     MPNotifyQueue
  79.     MPWaitOnQueue
  80.     MPCreateSemaphore
  81.     MPCreateBinarySemaphore     (In C only, a macro that calls MPCreateSemaphore.)
  82.     MPDeleteSemaphore
  83.     MPSignalSemaphore
  84.     MPWaitOnSemaphore
  85.     MPCreateCriticalRegion
  86.     MPDeleteCriticalRegion
  87.     MPEnterCriticalRegion
  88.     MPExitCriticalRegion
  89.     MPAllocate                  (Deprecated, use MPAllocateAligned for new builds.)
  90.     MPFree
  91.     MPBlockCopy
  92.     MPLibraryIsLoaded           (In C only, a macro.)
  93.     _MPIsFullyInitialized       (See comments about checking for MP API availability.)
  94.    ===========================================================================================
  95. */
  96. /*
  97.    ===========================================================================================
  98.    The following services are new in version 2.0:
  99.     MPProcessorsScheduled
  100.     MPSetTaskWeight
  101.     MPTaskIsPreemptive
  102.     MPAllocateTaskStorageIndex
  103.     MPDeallocateTaskStorageIndex
  104.     MPSetTaskStorageValue
  105.     MPGetTaskStorageValue
  106.     MPSetQueueReserve
  107.     MPCreateEvent
  108.     MPDeleteEvent
  109.     MPSetEvent
  110.     MPWaitForEvent
  111.     UpTime
  112.     DurationToAbsolute
  113.     AbsoluteToDuration
  114.     MPDelayUntil
  115.     MPCreateTimer
  116.     MPDeleteTimer
  117.     MPSetTimerNotify
  118.     MPArmTimer
  119.     MPCancelTimer
  120.     MPSetExceptionHandler
  121.     MPThrowException
  122.     MPDisposeTaskException
  123.     MPExtractTaskState
  124.     MPSetTaskState
  125.     MPRegisterDebugger
  126.     MPUnregisterDebugger
  127.     MPAllocateAligned           (Preferred over MPAllocate.)
  128.     MPGetAllocatedBlockSize
  129.     MPBlockClear
  130.     MPDataToCode
  131.     MPRemoteCall                (Preferred over _MPRPC.)
  132.    ===========================================================================================
  133. */
  134. /*
  135.    ===========================================================================================
  136.    The following services are new in version 2.1:
  137.     MPCreateNotification
  138.     MPDeleteNotification
  139.     MPModifyNotification
  140.     MPCauseNotification
  141.     MPGetNextTaskID
  142.     MPGetNextCpuID
  143.    ===========================================================================================
  144. */
  145. /*
  146.    ===========================================================================================
  147.    The following services are "unofficial" extensions to the original API.  They are not in
  148.    the multiprocessing API documentation, but were in previous versions of this header.  They
  149.    remain supported in version 2.0.  They may not be supported in other environments.
  150.     _MPRPC                      (Deprecated, use MPRemoteCall for new builds.)
  151.     _MPAllocateSys              (Deprecated, use MPAllocateAligned for new builds.)
  152.     _MPTaskIsToolboxSafe
  153.     _MPLibraryVersion
  154.     _MPLibraryIsCompatible
  155.    ===========================================================================================
  156. */
  157. /*
  158.    ===========================================================================================
  159.    The following services were in previous versions of this header for "debugging only" use.
  160.    They are NOT implemented in version 2.0.  For old builds they can be accessed by defining
  161.    the symbol MPIncludeDefunctServices to have a nonzero value.
  162.     _MPInitializePrintf
  163.     _MPPrintf
  164.     _MPDebugStr
  165.     _MPStatusPString
  166.     _MPStatusCString
  167.    ===========================================================================================
  168. */
  169. /*
  170.    .
  171.    ===========================================================================================
  172.    General Types and Constants
  173.    ===========================
  174. */
  175. #define MPCopyrightNotice   
  176.     "Copyright