19 #ifndef __DRIVERSERVICES__
20 #define __DRIVERSERVICES__
22 #ifndef __CONDITIONALMACROS__
34 #ifndef __MACHINEEXCEPTIONS__
42 #ifndef __DRIVERSYNCHRONIZATION__
46 #ifndef __NAMEREGISTRY__
63 #if PRAGMA_STRUCT_ALIGN
64 #pragma options align = power
65 #elif PRAGMA_STRUCT_PACKPUSH
67 #elif PRAGMA_STRUCT_PACK
78 typedef struct OpaqueSoftwareInterruptID *SoftwareInterruptID;
79 typedef struct OpaqueTaskID *TaskID;
80 typedef struct OpaqueTimerID *TimerID;
86 kSoftwareInterruptLevel = 1,
87 kAcceptFunctionLevel = 2,
89 kSIHAcceptFunctionLevel = 4,
90 kSecondaryInterruptLevel = 5,
91 kHardwareInterruptLevel = 6,
95 typedef CALLBACK_API_C(
void, SoftwareInterruptHandler)(
void *p1,
void *p2);
96 typedef CALLBACK_API_C(OSStatus, SecondaryInterruptHandler2)(
void *p1,
98 #define kCurrentAddressSpaceID ((AddressSpaceID)-1)
102 LogicalAddress address;
109 PhysicalAddress address;
118 kIOMultipleRanges = 0x00000001,
119 kIOLogicalRanges = 0x00000002,
120 kIOMinimalLogicalMapping = 0x00000004,
121 kIOShareMappingTables = 0x00000008,
122 kIOIsInput = 0x00000010,
123 kIOIsOutput = 0x00000020,
124 kIOCoherentDataPath = 0x00000040,
125 kIOTransferIsLogical = 0x00000080,
126 kIOClientIsUserMode = 0x00000080
129 typedef OptionBits IOPreparationState;
132 kIOStateDone = 0x00000001
137 kInvalidPageAddress = (-1)
149 typedef PhysicalAddress *PhysicalMappingTablePtr;
153 ItemCount entryCount;
164 IOPreparationState state;
166 AddressSpaceID addressSpace;
167 ByteCount granularity;
168 ByteCount firstPrepared;
169 ByteCount lengthPrepared;
170 ItemCount mappingEntryCount;
172 PhysicalMappingTablePtr physicalMapping;
181 typedef OptionBits IOCheckpointOptions;
184 kNextIOIsInput = 0x00000001,
185 kNextIOIsOutput = 0x00000002,
186 kMoreIOTransfers = 0x00000004
194 kProcessorCacheModeDefault = 0,
195 kProcessorCacheModeInhibited = 1,
196 kProcessorCacheModeWriteThrough = 2,
197 kProcessorCacheModeCopyBack = 3
208 kPageInformationVersion = 1
211 typedef UInt32 PageStateInformation;
214 kPageIsProtected = 0x00000001,
215 kPageIsProtectedPrivileged = 0x00000002,
216 kPageIsModified = 0x00000004,
217 kPageIsReferenced = 0x00000008,
218 kPageIsLockedResident = 0x00000010,
220 kPageIsShared = 0x00000040,
221 kPageIsWriteThroughCached = 0x00000080,
222 kPageIsCopyBackCached = 0x00000100,
223 kPageIsHeldResident =
234 PageStateInformation information[1];
240 #if CALL_NOT_IN_CARBON
297 SoftwareInterruptID *theSoftwareInterrupt);
325 #if CALL_NOT_IN_CARBON
335 CallSecondaryInterruptHandler2(SecondaryInterruptHandler2 theHandler,
336 ExceptionHandler exceptionHandler,
void *p1,
348 QueueSecondaryInterruptHandler(SecondaryInterruptHandler2 theHandler,
349 ExceptionHandler exceptionHandler,
void *p1,
357 #if CALL_NOT_IN_CARBON
368 SecondaryInterruptHandler2 handler,
void *p1,
381 void *p1, TimerID *theTimer);
428 ByteCount length, PBVersion version,
449 #define kAAPLDeviceLogicalAddress "AAPL,address"
455 durationMicrosecond = -1L,
474 #if CALL_NOT_IN_CARBON
496 IOCommandCode *theCommand, IOCommandKind *theKind);
518 BlockCopy(
const void *srcPtr,
void *destPtr, Size byteCount);
611 #if CALL_NOT_IN_CARBON
622 UInt32 *theAbsoluteTimeToNanosecondNumerator,
623 UInt32 *theAbsoluteTimeToNanosecondDenominator,
624 UInt32 *theProcessorToAbsoluteTimeNumerator,
625 UInt32 *theProcessorToAbsoluteTimeDenominator);
786 #if CALL_NOT_IN_CARBON
1005 PStrCmp(ConstStr255Param str1, ConstStr255Param str2);
1027 PStrNCmp(ConstStr255Param str1, ConstStr255Param str2, UInt32 max);
1082 typedef long InterruptMemberNumber;
1086 InterruptMemberNumber member;
1091 kISTChipInterruptSource = 0,
1092 kISTOutputDMAInterruptSource = 1,
1093 kISTInputDMAInterruptSource = 2,
1094 kISTPropertyMemberCount = 3
1098 #define kISTPropertyName "driver-ist"
1100 typedef long InterruptReturnValue;
1103 kFirstMemberNumber = 1,
1105 kIsrIsNotComplete = -1,
1106 kMemberNumberParent = -2
1109 typedef Boolean InterruptSourceState;
1112 kSourceWasEnabled =
true,
1113 kSourceWasDisabled =
false
1116 typedef CALLBACK_API_C(InterruptMemberNumber,
1118 void *refCon, UInt32 theIntCount);
1121 typedef CALLBACK_API_C(InterruptSourceState,
1126 kReturnToParentWhenComplete = 0x00000001,
1127 kReturnToParentWhenNotComplete = 0x00000002
1130 typedef OptionBits InterruptSetOptions;
1132 #if CALL_NOT_IN_CARBON
1144 InterruptSetOptions options);
1156 void *refCon, InterruptHandler handlerFunction,
1157 InterruptEnabler enableFunction,
1158 InterruptDisabler disableFunction);
1170 void **refCon, InterruptHandler *handlerFunction,
1171 InterruptEnabler *enableFunction,
1172 InterruptDisabler *disableFunction);
1198 #if PRAGMA_STRUCT_ALIGN
1199 #pragma options align = reset
1200 #elif PRAGMA_STRUCT_PACKPUSH
1202 #elif PRAGMA_STRUCT_PACK
1206 #ifdef PRAGMA_IMPORT_OFF
1209 #pragma import reset
Set up for compiler independent conditionals.
Device Manager Interfaces.
LogicalAddress * DeviceLogicalAddressPtr
Definition: DriverServices.h:452
OSStatus CancelTimer(TimerID theTimer, AbsoluteTime *timeRemaining)
OSStatus DeviceProbe(void *theSrc, void *theDest, UInt32 AccessType)
OSStatus SendSoftwareInterrupt(SoftwareInterruptID theSoftwareInterrupt, void *p2)
ExecutionLevel CurrentExecutionLevel(void)
AbsoluteTime NanosecondsToAbsolute(Nanoseconds nanoseconds)
SInt16 CStrCmp(const char *s1, const char *s2)
OSErr PBQueueInit(QHdrPtr qHeader)
AbsoluteTime SubAbsoluteFromAbsolute(AbsoluteTime leftAbsoluteTime, AbsoluteTime rightAbsoluteTime)
LogicalAddress MemAllocatePhysicallyContiguous(ByteCount byteSize, Boolean clear)
void CStrToPStr(Str255 dst, const char *src)
struct OpaqueIOPreparationID * IOPreparationID
Definition: DriverServices.h:77
Duration AbsoluteToDuration(AbsoluteTime absoluteTime)
OSStatus CheckpointIO(IOPreparationID theIOPreparation, IOCheckpointOptions options)
OSErr PBEnqueueLast(QElemPtr qElement, QHdrPtr qHeader)
OSStatus MemDeallocatePhysicallyContiguous(LogicalAddress address)
OSStatus CreateSoftwareInterrupt(SoftwareInterruptHandler handler, TaskID task, void *p1, Boolean persistent, SoftwareInterruptID *theSoftwareInterrupt)
OSStatus SetPersistentTimer(Duration frequency, SecondaryInterruptHandler2 theHandler, void *p1, TimerID *theTimer)
AbsoluteTime DurationToAbsolute(Duration duration)
ByteCount GetDataCacheLineSize(void)
OSErr PBQueueCreate(QHdrPtr *qHeader)
@ durationMillisecond
Definition: DriverServices.h:456
@ durationHour
Definition: DriverServices.h:459
@ durationNoWait
Definition: DriverServices.h:461
@ durationDay
Definition: DriverServices.h:460
@ durationMinute
Definition: DriverServices.h:458
@ durationSecond
Definition: DriverServices.h:457
@ durationForever
Definition: DriverServices.h:462
AbsoluteTime AddDurationToAbsolute(Duration duration, AbsoluteTime absoluteTime)
Nanoseconds AbsoluteDeltaToNanoseconds(AbsoluteTime leftAbsoluteTime, AbsoluteTime rightAbsoluteTime)
@ kPageIsLocked
Definition: DriverServices.h:226
@ kPageIsInMemory
Definition: DriverServices.h:219
@ kPageIsResident
Definition: DriverServices.h:227
OSStatus InstallInterruptFunctions(InterruptSetID setID, InterruptMemberNumber member, void *refCon, InterruptHandler handlerFunction, InterruptEnabler enableFunction, InterruptDisabler disableFunction)
OSErr PBDequeueFirst(QHdrPtr qHeader, QElemPtr *theFirstqElem)
OSStatus CreateInterruptSet(InterruptSetID parentSet, InterruptMemberNumber parentMember, InterruptMemberNumber setSize, InterruptSetID *setID, InterruptSetOptions options)
Nanoseconds AbsoluteToNanoseconds(AbsoluteTime absoluteTime)
OSStatus DelayForHardware(AbsoluteTime absoluteTime)
Duration NanosecondsToDuration(Nanoseconds theNanoseconds)
Nanoseconds DurationToNanoseconds(Duration theDuration)
UInt32 ExecutionLevel
Definition: DriverServices.h:82
OSStatus GetInterruptSetOptions(InterruptSetID setID, InterruptSetOptions *options)
ByteCount GetLogicalPageSize(void)
OSStatus PrepareMemoryForIO(IOPreparationTable *theIOPreparationTable)
@ k32BitAccess
Definition: DriverServices.h:469
@ k16BitAccess
Definition: DriverServices.h:468
OSErr PBQueueDelete(QHdrPtr qHeader)
void BlockCopy(const void *srcPtr, void *destPtr, Size byteCount)
void GetTimeBaseInfo(UInt32 *minAbsoluteTimeDelta, UInt32 *theAbsoluteTimeToNanosecondNumerator, UInt32 *theAbsoluteTimeToNanosecondDenominator, UInt32 *theProcessorToAbsoluteTimeNumerator, UInt32 *theProcessorToAbsoluteTimeDenominator)
AbsoluteTime SubDurationFromAbsolute(Duration duration, AbsoluteTime absoluteTime)
LogicalAddress PoolAllocateResident(ByteCount byteSize, Boolean clear)
UInt32 ProcessorCacheMode
Definition: DriverServices.h:191
StringPtr PStrNCat(StringPtr dst, ConstStr255Param src, UInt32 max)
TaskID CurrentTaskID(void)
SInt16 CStrNCmp(const char *s1, const char *s2, UInt32 max)
OSStatus SetInterruptTimer(const AbsoluteTime *expirationTime, SecondaryInterruptHandler2 handler, void *p1, TimerID *theTimer)
AbsoluteTime UpTime(void)
LogicalAddress * LogicalMappingTablePtr
Definition: DriverServices.h:148
OSStatus ChangeInterruptSetOptions(InterruptSetID setID, InterruptSetOptions options)
SInt16 PStrNCmp(ConstStr255Param str1, ConstStr255Param str2, UInt32 max)
SInt16 PStrCmp(ConstStr255Param str1, ConstStr255Param str2)
UInt32 CStrLen(const char *src)
OSStatus SetProcessorCacheMode(AddressSpaceID addressSpace, ConstLogicalAddress base, ByteCount length, ProcessorCacheMode cacheMode)
OSStatus FlushProcessorCache(AddressSpaceID spaceID, LogicalAddress base, ByteCount length)
OSStatus GetPageInformation(AddressSpaceID addressSpace, ConstLogicalAddress base, ByteCount length, PBVersion version, PageInformation *thePageInfo)
OSErr PBDequeue(QElemPtr qElement, QHdrPtr qHeader)
void PStrToCStr(char *dst, ConstStr255Param src)
OSStatus DeleteSoftwareInterrupt(SoftwareInterruptID theSoftwareInterrupt)
StringPtr PStrNCopy(StringPtr dst, ConstStr255Param src, UInt32 max)
OptionBits IOPreparationOptions
Definition: DriverServices.h:115
OSStatus GetInterruptFunctions(InterruptSetID setID, InterruptMemberNumber member, void **refCon, InterruptHandler *handlerFunction, InterruptEnabler *enableFunction, InterruptDisabler *disableFunction)
OSErr IOCommandIsComplete(IOCommandID theID, OSErr theResult)
OSStatus PoolDeallocate(LogicalAddress address)
StringPtr PStrCat(StringPtr dst, ConstStr255Param src)
UInt32 PStrLen(ConstStr255Param src)
char * CStrNCopy(char *dst, const char *src, UInt32 max)
Duration AbsoluteDeltaToDuration(AbsoluteTime leftAbsoluteTime, AbsoluteTime rightAbsoluteTime)
char * CStrCopy(char *dst, const char *src)
StringPtr PStrCopy(StringPtr dst, ConstStr255Param src)
char * CStrCat(char *dst, const char *src)
OSErr PBDequeueLast(QHdrPtr qHeader, QElemPtr *theLastqElem)
char * CStrNCat(char *dst, const char *src, UInt32 max)
struct OpaqueInterruptSetID * InterruptSetID
Definition: DriverServices.h:1081
OSErr GetIOCommandInfo(IOCommandID theID, IOCommandContents *theContents, IOCommandCode *theCommand, IOCommandKind *theKind)
Boolean InPrivilegedMode(void)
AbsoluteTime SubNanosecondsFromAbsolute(Nanoseconds nanoseconds, AbsoluteTime absoluteTime)
AbsoluteTime AddAbsoluteToAbsolute(AbsoluteTime absoluteTime1, AbsoluteTime absoluteTime2)
void UpdateDeviceActivity(RegEntryID *deviceEntry)
AbsoluteTime AddNanosecondsToAbsolute(Nanoseconds nanoseconds, AbsoluteTime absoluteTime)
OSStatus DelayFor(Duration delayDuration)
void PBEnqueue(QElemPtr qElement, QHdrPtr qHeader)
Driver Synchronization Interfaces.
Basic Macintosh data types.
unsigned char * StringPtr
Definition: MacTypes.h:477
unsigned char Boolean
Definition: MacTypes.h:318
Processor Exception Handling Interfaces.
struct OpaqueAreaID * AreaID
Definition: MachineExceptions.h:52
Definition: DriverServices.h:141
Definition: DriverServices.h:162
Definition: DriverServices.h:1084
Definition: DriverServices.h:101
Definition: DriverServices.h:152
Definition: DriverServices.h:231
Definition: DriverServices.h:108
Definition: OSUtils.h:131
Definition: OSUtils.h:154
Definition: NameRegistry.h:62
Definition: MacTypes.h:110
Definition: Devices.h:303