source-engine/common/quicktime_win32/MultiprocessingInfo.h

583 lines
15 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
/*
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__ */