You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
582 lines
15 KiB
582 lines
15 KiB
/* |
|
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 <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __MULTIPROCESSING__ |
|
#include <Multiprocessing.h> |
|
#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__ */ |
|
|
|
|