/* File: MultiprocessingInfo.h Contains: Multiprocessing Information interfaces Version: QuickTime 7.3 Copyright: (c) 2007 (c) 1996-2001 by Apple Computer, Inc. and (c) 1995-1997 DayStar Digital, Inc. Bugs?: 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 "Checking API Availability". ========================================================================================================================== */ #ifndef __MULTIPROCESSINGINFO__ #define __MULTIPROCESSINGINFO__ #ifndef __MACTYPES__ #include #endif #ifndef __MULTIPROCESSING__ #include #endif #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=power #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif /* ========================================================================================================================== This is the header file for version 2.3 of the Mac OS multiprocessing information support. ========================================================================================================================== */ /* ========================================================================================================================== The following services are new in version 2.1: MPGetNextTaskID MPGetNextCpuID ========================================================================================================================== */ /* ========================================================================================================================== The following services are new in version 2.2: MPGetPageSizeClasses MPGetPageSize MPGetNextAreaID ========================================================================================================================== */ /* ========================================================================================================================== The following services are new in version 2.3: MPGetNextCoherenceID MPGetNextProcessID MPGetNextAddressSpaceID MPGetNextQueueID MPGetNextSemaphoreID MPGetNextCriticalRegionID MPGetNextTimerID MPGetNextEventID MPGetNextNotificationID MPGetNextConsoleID ========================================================================================================================== */ /* . ========================================================================================================================== Page size Services ================== */ #if CALL_NOT_IN_CARBON /* * MPGetPageSizeClasses() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( MPPageSizeClass ) MPGetPageSizeClasses(void); /* The number of page size classes, 1 to n.*/ #endif /* CALL_NOT_IN_CARBON */ /* -------------------------------------------------------------------------------------------*/ #if CALL_NOT_IN_CARBON /* * MPGetPageSize() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( ByteCount ) MPGetPageSize(MPPageSizeClass pageClass); /* The page size in bytes.*/ #endif /* CALL_NOT_IN_CARBON */ /* . ========================================================================================================================== ID Iterator Services ========================== */ #if CALL_NOT_IN_CARBON /* * MPGetNextCoherenceID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextCoherenceID(MPCoherenceID * coherenceID); /* * MPGetNextCpuID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextCpuID( MPCoherenceID owningCoherenceID, MPCpuID * cpuID); /* * MPGetNextProcessID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextProcessID(MPProcessID * processID); /* * MPGetNextAddressSpaceID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextAddressSpaceID( MPProcessID owningProcessID, MPAddressSpaceID * addressSpaceID); /* * MPGetNextTaskID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextTaskID( MPProcessID owningProcessID, MPTaskID * taskID); /* * MPGetNextQueueID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextQueueID( MPProcessID owningProcessID, MPQueueID * queueID); /* * MPGetNextSemaphoreID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextSemaphoreID( MPProcessID owningProcessID, MPSemaphoreID * semaphoreID); /* * MPGetNextCriticalRegionID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextCriticalRegionID( MPProcessID owningProcessID, MPCriticalRegionID * criticalRegionID); /* * MPGetNextTimerID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextTimerID( MPProcessID owningProcessID, MPTimerID * timerID); /* * MPGetNextEventID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextEventID( MPProcessID owningProcessID, MPEventID * eventID); /* * MPGetNextNotificationID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextNotificationID( MPProcessID owningProcessID, MPNotificationID * notificationID); #endif /* CALL_NOT_IN_CARBON */ #if CALL_NOT_IN_CARBON /* * MPGetNextAreaID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API( OSStatus ) MPGetNextAreaID( MPAddressSpaceID owningSpaceID, MPAreaID * areaID); #endif /* CALL_NOT_IN_CARBON */ #if CALL_NOT_IN_CARBON /* * MPGetNextConsoleID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextConsoleID(MPConsoleID * consoleID); /* -------------------------------------------------------------------------------------------*/ /* * MPGetNextID() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNextID( MPOpaqueIDClass kind, MPOpaqueID * id); /* . ========================================================================================================================== Object Information Services =========================== */ /* ---------------------------------------------------------------------------------------------- ! The implementation of MPGetObjectInfo assumes that all info records are in 4 byte multiples. */ #endif /* CALL_NOT_IN_CARBON */ enum { /* The version of the MPAreaInfo structure requested.*/ kMPQueueInfoVersion = 1L | (kOpaqueQueueID << 16), kMPSemaphoreInfoVersion = 1L | (kOpaqueSemaphoreID << 16), kMPEventInfoVersion = 1L | (kOpaqueEventID << 16), kMPCriticalRegionInfoVersion = 1L | (kOpaqueCriticalRegionID << 16), kMPNotificationInfoVersion = 1L | (kOpaqueNotificationID << 16), kMPAddressSpaceInfoVersion = 1L | (kOpaqueAddressSpaceID << 16) }; struct MPQueueInfo { PBVersion version; /* Version of the data structure requested*/ MPProcessID processID; /* Owning process ID*/ OSType queueName; /* Queue name*/ ItemCount nWaiting; MPTaskID waitingTaskID; /* First waiting task.*/ ItemCount nMessages; ItemCount nReserved; void * p1; /* First message parameters...*/ void * p2; void * p3; }; typedef struct MPQueueInfo MPQueueInfo; struct MPSemaphoreInfo { PBVersion version; /* Version of the data structure requested*/ MPProcessID processID; /* Owning process ID*/ OSType semaphoreName; /* Semaphore name*/ ItemCount nWaiting; MPTaskID waitingTaskID; /* First waiting task.*/ ItemCount maximum; ItemCount count; }; typedef struct MPSemaphoreInfo MPSemaphoreInfo; struct MPEventInfo { PBVersion version; /* Version of the data structure requested*/ MPProcessID processID; /* Owning process ID*/ OSType eventName; /* Event name*/ ItemCount nWaiting; MPTaskID waitingTaskID; /* First waiting task.*/ MPEventFlags events; }; typedef struct MPEventInfo MPEventInfo; struct MPCriticalRegionInfo { PBVersion version; /* Version of the data structure requested*/ MPProcessID processID; /* Owning process ID*/ OSType regionName; /* Critical region name*/ ItemCount nWaiting; MPTaskID waitingTaskID; /* First waiting task.*/ MPTaskID owningTask; ItemCount count; }; typedef struct MPCriticalRegionInfo MPCriticalRegionInfo; struct MPNotificationInfo { PBVersion version; /* Version of the data structure requested*/ MPProcessID processID; /* Owning process ID*/ OSType notificationName; /* Notification name*/ MPQueueID queueID; /* Queue to notify.*/ void * p1; void * p2; void * p3; MPEventID eventID; /* Event to set.*/ MPEventFlags events; MPSemaphoreID semaphoreID; /* Sempahore to signal. */ }; typedef struct MPNotificationInfo MPNotificationInfo; struct MPAddressSpaceInfo { PBVersion version; /* Version of the data structure requested*/ MPProcessID processID; /* Owning process ID*/ MPCoherenceID groupID; /* Related coherence group.*/ ItemCount nTasks; /* Number of tasks in this space.*/ UInt32 vsid[16]; /* Segment register VSIDs.*/ }; typedef struct MPAddressSpaceInfo MPAddressSpaceInfo; /* *** We should put the task info call here instead of in MPExtractTaskState.*/ #if CALL_NOT_IN_CARBON /* * MPGetQueueInfo() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetQueueInfo( MPQueueID id, PBVersion version, MPQueueInfo * info_o); /* * MPGetSemaphoreInfo() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetSemaphoreInfo( MPSemaphoreID id, PBVersion version, MPSemaphoreInfo * info_o); /* * MPGetEventInfo() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetEventInfo( MPEventID id, PBVersion version, MPEventInfo * info_o); /* * MPGetCriticalRegionInfo() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetCriticalRegionInfo( MPCriticalRegionID id, PBVersion version, MPCriticalRegionInfo * info_o); /* * MPGetNotificationInfo() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetNotificationInfo( MPNotificationID id, PBVersion version, MPNotificationInfo * info_o); /* * MPGetAddressSpaceInfo() * * Availability: * Non-Carbon CFM: in MPDiagnostics 2.3 and later * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( OSStatus ) MPGetAddressSpaceInfo( MPAddressSpaceID id, PBVersion version, MPAddressSpaceInfo * info_o); /* ==========================================================================================================================*/ #endif /* CALL_NOT_IN_CARBON */ #if PRAGMA_STRUCT_ALIGN #pragma options align=reset #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(pop) #elif PRAGMA_STRUCT_PACK #pragma pack() #endif #ifdef PRAGMA_IMPORT_OFF #pragma import off #elif PRAGMA_IMPORT #pragma import reset #endif #ifdef __cplusplus } #endif #endif /* __MULTIPROCESSINGINFO__ */