583 lines
15 KiB
C
583 lines
15 KiB
C
/*
|
|
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__ */
|
|
|