Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.
 
 
 
 
 
 

1386 lines
32 KiB

/*
File: DriverServices.h
Contains: Driver Services Interfaces.
Version: QuickTime 7.3
Copyright: (c) 2007 (c) 1985-2001 by Apple Computer, Inc., all rights reserved
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
#ifndef __DRIVERSERVICES__
#define __DRIVERSERVICES__
#ifndef __CONDITIONALMACROS__
#include <ConditionalMacros.h>
#endif
#ifndef __MACTYPES__
#include <MacTypes.h>
#endif
#ifndef __MACERRORS__
#include <MacErrors.h>
#endif
#ifndef __MACHINEEXCEPTIONS__
#include <MachineExceptions.h>
#endif
#ifndef __DEVICES__
#include <Devices.h>
#endif
#ifndef __DRIVERSYNCHRONIZATION__
#include <DriverSynchronization.h>
#endif
#ifndef __NAMEREGISTRY__
#include <NameRegistry.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
/******************************************************************
*
* Previously in Kernel.h
*
******************************************************************/
/* Kernel basics*/
typedef struct OpaqueIOPreparationID* IOPreparationID;
typedef struct OpaqueSoftwareInterruptID* SoftwareInterruptID;
typedef struct OpaqueTaskID* TaskID;
typedef struct OpaqueTimerID* TimerID;
/* Tasking*/
typedef UInt32 ExecutionLevel;
enum {
kTaskLevel = 0,
kSoftwareInterruptLevel = 1,
kAcceptFunctionLevel = 2,
kKernelLevel = 3,
kSIHAcceptFunctionLevel = 4,
kSecondaryInterruptLevel = 5,
kHardwareInterruptLevel = 6,
kMPTaskLevel = 7
};
typedef CALLBACK_API_C( void , SoftwareInterruptHandler )(void *p1, void *p2);
typedef CALLBACK_API_C( OSStatus , SecondaryInterruptHandler2 )(void *p1, void *p2);
#define kCurrentAddressSpaceID ((AddressSpaceID) -1)
/* Memory System basics*/
struct LogicalAddressRange {
LogicalAddress address;
ByteCount count;
};
typedef struct LogicalAddressRange LogicalAddressRange;
typedef LogicalAddressRange * LogicalAddressRangePtr;
struct PhysicalAddressRange {
PhysicalAddress address;
ByteCount count;
};
typedef struct PhysicalAddressRange PhysicalAddressRange;
typedef PhysicalAddressRange * PhysicalAddressRangePtr;
/* For PrepareMemoryForIO and CheckpointIO*/
typedef OptionBits IOPreparationOptions;
enum {
kIOMultipleRanges = 0x00000001,
kIOLogicalRanges = 0x00000002,
kIOMinimalLogicalMapping = 0x00000004,
kIOShareMappingTables = 0x00000008,
kIOIsInput = 0x00000010,
kIOIsOutput = 0x00000020,
kIOCoherentDataPath = 0x00000040,
kIOTransferIsLogical = 0x00000080,
kIOClientIsUserMode = 0x00000080
};
typedef OptionBits IOPreparationState;
enum {
kIOStateDone = 0x00000001
};
enum {
kInvalidPageAddress = (-1)
};
struct AddressRange {
void * base;
ByteCount length;
};
typedef struct AddressRange AddressRange;
/* C's treatment of arrays and array pointers is atypical*/
typedef LogicalAddress * LogicalMappingTablePtr;
typedef PhysicalAddress * PhysicalMappingTablePtr;
typedef AddressRange * AddressRangeTablePtr;
struct MultipleAddressRange {
ItemCount entryCount;
AddressRangeTablePtr rangeTable;
};
typedef struct MultipleAddressRange MultipleAddressRange;
/*
Separate C definition so that union has a name. A future version of the interfacer
tool will allow a name (that gets thrown out in Pascal and Asm).
*/
struct IOPreparationTable {
IOPreparationOptions options;
IOPreparationState state;
IOPreparationID preparationID;
AddressSpaceID addressSpace;
ByteCount granularity;
ByteCount firstPrepared;
ByteCount lengthPrepared;
ItemCount mappingEntryCount;
LogicalMappingTablePtr logicalMapping;
PhysicalMappingTablePtr physicalMapping;
union {
AddressRange range;
MultipleAddressRange multipleRanges;
} rangeInfo;
};
typedef struct IOPreparationTable IOPreparationTable;
typedef OptionBits IOCheckpointOptions;
enum {
kNextIOIsInput = 0x00000001,
kNextIOIsOutput = 0x00000002,
kMoreIOTransfers = 0x00000004
};
/* For SetProcessorCacheMode*/
typedef UInt32 ProcessorCacheMode;
enum {
kProcessorCacheModeDefault = 0,
kProcessorCacheModeInhibited = 1,
kProcessorCacheModeWriteThrough = 2,
kProcessorCacheModeCopyBack = 3
};
/*
For GetPageInformation
(Note: if kPageInformationVersion fails, try 0 -- old versions of DSL defined kPageInformationVersion as 0)
*/
enum {
kPageInformationVersion = 1
};
typedef UInt32 PageStateInformation;
enum {
kPageIsProtected = 0x00000001,
kPageIsProtectedPrivileged = 0x00000002,
kPageIsModified = 0x00000004,
kPageIsReferenced = 0x00000008,
kPageIsLockedResident = 0x00000010, /* held and locked resident*/
kPageIsInMemory = 0x00000020,
kPageIsShared = 0x00000040,
kPageIsWriteThroughCached = 0x00000080,
kPageIsCopyBackCached = 0x00000100,
kPageIsHeldResident = 0x00000200, /* held resident - use kPageIsLockedResident to check for locked state*/
kPageIsLocked = kPageIsLockedResident, /* Deprecated*/
kPageIsResident = kPageIsInMemory /* Deprecated*/
};
struct PageInformation {
AreaID area;
ItemCount count;
PageStateInformation information[1];
};
typedef struct PageInformation PageInformation;
typedef PageInformation * PageInformationPtr;
/* Tasks */
#if CALL_NOT_IN_CARBON
/*
* CurrentExecutionLevel()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( ExecutionLevel )
CurrentExecutionLevel(void);
/*
* CurrentTaskID()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TaskID )
CurrentTaskID(void);
/*
* DelayFor()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
DelayFor(Duration delayDuration);
/*
* InPrivilegedMode()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( Boolean )
InPrivilegedMode(void);
/* Software Interrupts */
/*
* CreateSoftwareInterrupt()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
CreateSoftwareInterrupt(
SoftwareInterruptHandler handler,
TaskID task,
void * p1,
Boolean persistent,
SoftwareInterruptID * theSoftwareInterrupt);
/*
* SendSoftwareInterrupt()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
SendSoftwareInterrupt(
SoftwareInterruptID theSoftwareInterrupt,
void * p2);
/*
* DeleteSoftwareInterrupt()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
DeleteSoftwareInterrupt(SoftwareInterruptID theSoftwareInterrupt);
#endif /* CALL_NOT_IN_CARBON */
#if TARGET_OS_MAC
/* Secondary Interrupts */
#if CALL_NOT_IN_CARBON
/*
* CallSecondaryInterruptHandler2()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
CallSecondaryInterruptHandler2(
SecondaryInterruptHandler2 theHandler,
ExceptionHandler exceptionHandler,
void * p1,
void * p2);
/*
* QueueSecondaryInterruptHandler()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
QueueSecondaryInterruptHandler(
SecondaryInterruptHandler2 theHandler,
ExceptionHandler exceptionHandler,
void * p1,
void * p2);
#endif /* CALL_NOT_IN_CARBON */
#endif /* TARGET_OS_MAC */
/* Timers */
#if CALL_NOT_IN_CARBON
/*
* SetInterruptTimer()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
SetInterruptTimer(
const AbsoluteTime * expirationTime,
SecondaryInterruptHandler2 handler,
void * p1,
TimerID * theTimer);
/*
* SetPersistentTimer()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
SetPersistentTimer(
Duration frequency,
SecondaryInterruptHandler2 theHandler,
void * p1,
TimerID * theTimer);
/*
* CancelTimer()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
CancelTimer(
TimerID theTimer,
AbsoluteTime * timeRemaining);
/* I/O related Operations */
/*
* PrepareMemoryForIO()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
PrepareMemoryForIO(IOPreparationTable * theIOPreparationTable);
/*
* CheckpointIO()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
CheckpointIO(
IOPreparationID theIOPreparation,
IOCheckpointOptions options);
/* Memory Operations */
/*
* GetPageInformation()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
GetPageInformation(
AddressSpaceID addressSpace,
ConstLogicalAddress base,
ByteCount length,
PBVersion version,
PageInformation * thePageInfo);
/* Processor Cache Related */
/*
* SetProcessorCacheMode()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
SetProcessorCacheMode(
AddressSpaceID addressSpace,
ConstLogicalAddress base,
ByteCount length,
ProcessorCacheMode cacheMode);
/******************************************************************
*
* Was in DriverSupport.h or DriverServices.h
*
******************************************************************/
#define kAAPLDeviceLogicalAddress "AAPL,address"
#endif /* CALL_NOT_IN_CARBON */
typedef LogicalAddress * DeviceLogicalAddressPtr;
enum {
durationMicrosecond = -1L, /* Microseconds are negative*/
durationMillisecond = 1L, /* Milliseconds are positive*/
durationSecond = 1000L, /* 1000 * durationMillisecond*/
durationMinute = 60000L, /* 60 * durationSecond,*/
durationHour = 3600000L, /* 60 * durationMinute,*/
durationDay = 86400000L, /* 24 * durationHour,*/
durationNoWait = 0L, /* don't block*/
durationForever = 0x7FFFFFFF /* no time limit*/
};
enum {
k8BitAccess = 0, /* access as 8 bit*/
k16BitAccess = 1, /* access as 16 bit*/
k32BitAccess = 2 /* access as 32 bit*/
};
typedef UnsignedWide Nanoseconds;
#if CALL_NOT_IN_CARBON
/*
* IOCommandIsComplete()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
IOCommandIsComplete(
IOCommandID theID,
OSErr theResult);
/*
* GetIOCommandInfo()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
GetIOCommandInfo(
IOCommandID theID,
IOCommandContents * theContents,
IOCommandCode * theCommand,
IOCommandKind * theKind);
/*
* UpdateDeviceActivity()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
UpdateDeviceActivity(RegEntryID * deviceEntry);
/*
* BlockCopy()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
BlockCopy(
const void * srcPtr,
void * destPtr,
Size byteCount);
/*
* PoolAllocateResident()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( LogicalAddress )
PoolAllocateResident(
ByteCount byteSize,
Boolean clear);
/*
* PoolDeallocate()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
PoolDeallocate(LogicalAddress address);
/*
* GetLogicalPageSize()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( ByteCount )
GetLogicalPageSize(void);
/*
* GetDataCacheLineSize()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( ByteCount )
GetDataCacheLineSize(void);
/*
* FlushProcessorCache()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
FlushProcessorCache(
AddressSpaceID spaceID,
LogicalAddress base,
ByteCount length);
/*
* MemAllocatePhysicallyContiguous()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( LogicalAddress )
MemAllocatePhysicallyContiguous(
ByteCount byteSize,
Boolean clear);
/*
* MemDeallocatePhysicallyContiguous()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
MemDeallocatePhysicallyContiguous(LogicalAddress address);
#endif /* CALL_NOT_IN_CARBON */
/*
* UpTime()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
UpTime(void);
#if CALL_NOT_IN_CARBON
/*
* GetTimeBaseInfo()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
GetTimeBaseInfo(
UInt32 * minAbsoluteTimeDelta,
UInt32 * theAbsoluteTimeToNanosecondNumerator,
UInt32 * theAbsoluteTimeToNanosecondDenominator,
UInt32 * theProcessorToAbsoluteTimeNumerator,
UInt32 * theProcessorToAbsoluteTimeDenominator);
#endif /* CALL_NOT_IN_CARBON */
/*
* AbsoluteToNanoseconds()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( Nanoseconds )
AbsoluteToNanoseconds(AbsoluteTime absoluteTime);
/*
* AbsoluteToDuration()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( Duration )
AbsoluteToDuration(AbsoluteTime absoluteTime);
/*
* NanosecondsToAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
NanosecondsToAbsolute(Nanoseconds nanoseconds);
/*
* DurationToAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
DurationToAbsolute(Duration duration);
/*
* AddAbsoluteToAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
AddAbsoluteToAbsolute(
AbsoluteTime absoluteTime1,
AbsoluteTime absoluteTime2);
/*
* SubAbsoluteFromAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
SubAbsoluteFromAbsolute(
AbsoluteTime leftAbsoluteTime,
AbsoluteTime rightAbsoluteTime);
/*
* AddNanosecondsToAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
AddNanosecondsToAbsolute(
Nanoseconds nanoseconds,
AbsoluteTime absoluteTime);
/*
* AddDurationToAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
AddDurationToAbsolute(
Duration duration,
AbsoluteTime absoluteTime);
/*
* SubNanosecondsFromAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
SubNanosecondsFromAbsolute(
Nanoseconds nanoseconds,
AbsoluteTime absoluteTime);
/*
* SubDurationFromAbsolute()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( AbsoluteTime )
SubDurationFromAbsolute(
Duration duration,
AbsoluteTime absoluteTime);
/*
* AbsoluteDeltaToNanoseconds()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( Nanoseconds )
AbsoluteDeltaToNanoseconds(
AbsoluteTime leftAbsoluteTime,
AbsoluteTime rightAbsoluteTime);
/*
* AbsoluteDeltaToDuration()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( Duration )
AbsoluteDeltaToDuration(
AbsoluteTime leftAbsoluteTime,
AbsoluteTime rightAbsoluteTime);
/*
* DurationToNanoseconds()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( Nanoseconds )
DurationToNanoseconds(Duration theDuration);
/*
* NanosecondsToDuration()
*
* Availability:
* Non-Carbon CFM: in InterfaceLib 8.6 and later
* CarbonLib: in CarbonLib 1.0.2 and later
* Mac OS X: in version 10.0 and later
*/
EXTERN_API_C( Duration )
NanosecondsToDuration(Nanoseconds theNanoseconds);
#if CALL_NOT_IN_CARBON
/*
* PBQueueInit()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBQueueInit(QHdrPtr qHeader);
/*
* PBQueueCreate()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBQueueCreate(QHdrPtr * qHeader);
/*
* PBQueueDelete()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBQueueDelete(QHdrPtr qHeader);
/*
* PBEnqueue()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
PBEnqueue(
QElemPtr qElement,
QHdrPtr qHeader);
/*
* PBEnqueueLast()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBEnqueueLast(
QElemPtr qElement,
QHdrPtr qHeader);
/*
* PBDequeue()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBDequeue(
QElemPtr qElement,
QHdrPtr qHeader);
/*
* PBDequeueFirst()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBDequeueFirst(
QHdrPtr qHeader,
QElemPtr * theFirstqElem);
/*
* PBDequeueLast()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSErr )
PBDequeueLast(
QHdrPtr qHeader,
QElemPtr * theLastqElem);
/*
* CStrCopy()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( char * )
CStrCopy(
char * dst,
const char * src);
/*
* PStrCopy()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( StringPtr )
PStrCopy(
StringPtr dst,
ConstStr255Param src);
/*
* CStrNCopy()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( char * )
CStrNCopy(
char * dst,
const char * src,
UInt32 max);
/*
* PStrNCopy()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( StringPtr )
PStrNCopy(
StringPtr dst,
ConstStr255Param src,
UInt32 max);
/*
* CStrCat()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( char * )
CStrCat(
char * dst,
const char * src);
/*
* PStrCat()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( StringPtr )
PStrCat(
StringPtr dst,
ConstStr255Param src);
/*
* CStrNCat()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( char * )
CStrNCat(
char * dst,
const char * src,
UInt32 max);
/*
* PStrNCat()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( StringPtr )
PStrNCat(
StringPtr dst,
ConstStr255Param src,
UInt32 max);
/*
* PStrToCStr()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
PStrToCStr(
char * dst,
ConstStr255Param src);
/*
* CStrToPStr()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
CStrToPStr(
Str255 dst,
const char * src);
/*
* CStrCmp()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( SInt16 )
CStrCmp(
const char * s1,
const char * s2);
/*
* PStrCmp()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( SInt16 )
PStrCmp(
ConstStr255Param str1,
ConstStr255Param str2);
/*
* CStrNCmp()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( SInt16 )
CStrNCmp(
const char * s1,
const char * s2,
UInt32 max);
/*
* PStrNCmp()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( SInt16 )
PStrNCmp(
ConstStr255Param str1,
ConstStr255Param str2,
UInt32 max);
/*
* CStrLen()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( UInt32 )
CStrLen(const char * src);
/*
* PStrLen()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( UInt32 )
PStrLen(ConstStr255Param src);
/*
* DeviceProbe()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
DeviceProbe(
void * theSrc,
void * theDest,
UInt32 AccessType);
/*
* DelayForHardware()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
DelayForHardware(AbsoluteTime absoluteTime);
/******************************************************************
*
* Was in Interrupts.h
*
******************************************************************/
/* Interrupt types */
#endif /* CALL_NOT_IN_CARBON */
typedef struct OpaqueInterruptSetID* InterruptSetID;
typedef long InterruptMemberNumber;
struct InterruptSetMember {
InterruptSetID setID;
InterruptMemberNumber member;
};
typedef struct InterruptSetMember InterruptSetMember;
enum {
kISTChipInterruptSource = 0,
kISTOutputDMAInterruptSource = 1,
kISTInputDMAInterruptSource = 2,
kISTPropertyMemberCount = 3
};
typedef InterruptSetMember ISTProperty[3];
#define kISTPropertyName "driver-ist"
typedef long InterruptReturnValue;
enum {
kFirstMemberNumber = 1,
kIsrIsComplete = 0,
kIsrIsNotComplete = -1,
kMemberNumberParent = -2
};
typedef Boolean InterruptSourceState;
enum {
kSourceWasEnabled = true,
kSourceWasDisabled = false
};
typedef CALLBACK_API_C( InterruptMemberNumber , InterruptHandler )(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
typedef CALLBACK_API_C( void , InterruptEnabler )(InterruptSetMember ISTmember, void *refCon);
typedef CALLBACK_API_C( InterruptSourceState , InterruptDisabler )(InterruptSetMember ISTmember, void *refCon);
enum {
kReturnToParentWhenComplete = 0x00000001,
kReturnToParentWhenNotComplete = 0x00000002
};
typedef OptionBits InterruptSetOptions;
/* Interrupt Services */
#if CALL_NOT_IN_CARBON
/*
* CreateInterruptSet()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
CreateInterruptSet(
InterruptSetID parentSet,
InterruptMemberNumber parentMember,
InterruptMemberNumber setSize,
InterruptSetID * setID,
InterruptSetOptions options);
/*
* InstallInterruptFunctions()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
InstallInterruptFunctions(
InterruptSetID setID,
InterruptMemberNumber member,
void * refCon,
InterruptHandler handlerFunction,
InterruptEnabler enableFunction,
InterruptDisabler disableFunction);
/*
* GetInterruptFunctions()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
GetInterruptFunctions(
InterruptSetID setID,
InterruptMemberNumber member,
void ** refCon,
InterruptHandler * handlerFunction,
InterruptEnabler * enableFunction,
InterruptDisabler * disableFunction);
/*
* ChangeInterruptSetOptions()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
ChangeInterruptSetOptions(
InterruptSetID setID,
InterruptSetOptions options);
/*
* GetInterruptSetOptions()
*
* Availability:
* Non-Carbon CFM: in DriverServicesLib 1.0 and later
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( OSStatus )
GetInterruptSetOptions(
InterruptSetID setID,
InterruptSetOptions * options);
#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 /* __DRIVERSERVICES__ */