|
Mac OS 9
|
Driver Services Interfaces. More...
#include <ConditionalMacros.h>#include <MacTypes.h>#include <MacErrors.h>#include <MachineExceptions.h>#include <Devices.h>#include <DriverSynchronization.h>#include <NameRegistry.h>Go to the source code of this file.
Data Structures | |
| struct | LogicalAddressRange |
| struct | PhysicalAddressRange |
| struct | AddressRange |
| struct | MultipleAddressRange |
| struct | IOPreparationTable |
| struct | PageInformation |
| struct | InterruptSetMember |
Macros | |
| #define | kCurrentAddressSpaceID ((AddressSpaceID)-1) |
| #define | kAAPLDeviceLogicalAddress "AAPL,address" |
| #define | kISTPropertyName "driver-ist" |
Typedefs | |
| typedef struct OpaqueIOPreparationID * | IOPreparationID |
| typedef struct OpaqueSoftwareInterruptID * | SoftwareInterruptID |
| typedef struct OpaqueTaskID * | TaskID |
| typedef struct OpaqueTimerID * | TimerID |
| typedef UInt32 | ExecutionLevel |
| typedef void * | p2 |
| typedef struct LogicalAddressRange | LogicalAddressRange |
| typedef LogicalAddressRange * | LogicalAddressRangePtr |
| typedef struct PhysicalAddressRange | PhysicalAddressRange |
| typedef PhysicalAddressRange * | PhysicalAddressRangePtr |
| typedef OptionBits | IOPreparationOptions |
| typedef OptionBits | IOPreparationState |
| typedef struct AddressRange | AddressRange |
| typedef LogicalAddress * | LogicalMappingTablePtr |
| typedef PhysicalAddress * | PhysicalMappingTablePtr |
| typedef AddressRange * | AddressRangeTablePtr |
| typedef struct MultipleAddressRange | MultipleAddressRange |
| typedef struct IOPreparationTable | IOPreparationTable |
| typedef OptionBits | IOCheckpointOptions |
| typedef UInt32 | ProcessorCacheMode |
| typedef UInt32 | PageStateInformation |
| typedef struct PageInformation | PageInformation |
| typedef PageInformation * | PageInformationPtr |
| typedef LogicalAddress * | DeviceLogicalAddressPtr |
| typedef UnsignedWide | Nanoseconds |
| typedef struct OpaqueInterruptSetID * | InterruptSetID |
| typedef long | InterruptMemberNumber |
| typedef struct InterruptSetMember | InterruptSetMember |
| typedef InterruptSetMember | ISTProperty[3] |
| typedef long | InterruptReturnValue |
| typedef Boolean | InterruptSourceState |
| typedef void * | refCon |
| typedef void UInt32 | theIntCount |
| typedef OptionBits | InterruptSetOptions |
Enumerations | |
| enum | { kTaskLevel = 0 , kSoftwareInterruptLevel = 1 , kAcceptFunctionLevel = 2 , kKernelLevel = 3 , kSIHAcceptFunctionLevel = 4 , kSecondaryInterruptLevel = 5 , kHardwareInterruptLevel = 6 , kMPTaskLevel = 7 } |
| enum | { kIOMultipleRanges = 0x00000001 , kIOLogicalRanges = 0x00000002 , kIOMinimalLogicalMapping = 0x00000004 , kIOShareMappingTables = 0x00000008 , kIOIsInput = 0x00000010 , kIOIsOutput = 0x00000020 , kIOCoherentDataPath = 0x00000040 , kIOTransferIsLogical = 0x00000080 , kIOClientIsUserMode = 0x00000080 } |
| enum | { kIOStateDone = 0x00000001 } |
| enum | { kInvalidPageAddress = (-1) } |
| enum | { kNextIOIsInput = 0x00000001 , kNextIOIsOutput = 0x00000002 , kMoreIOTransfers = 0x00000004 } |
| enum | { kProcessorCacheModeDefault = 0 , kProcessorCacheModeInhibited = 1 , kProcessorCacheModeWriteThrough = 2 , kProcessorCacheModeCopyBack = 3 } |
| enum | { kPageInformationVersion = 1 } |
| enum | { kPageIsProtected = 0x00000001 , kPageIsProtectedPrivileged = 0x00000002 , kPageIsModified = 0x00000004 , kPageIsReferenced = 0x00000008 , kPageIsLockedResident = 0x00000010 , kPageIsInMemory = 0x00000020 , kPageIsShared = 0x00000040 , kPageIsWriteThroughCached = 0x00000080 , kPageIsCopyBackCached = 0x00000100 , kPageIsHeldResident , kPageIsLocked = kPageIsLockedResident , kPageIsResident = kPageIsInMemory } |
| enum | { durationMicrosecond = -1L , durationMillisecond = 1L , durationSecond = 1000L , durationMinute = 60000L , durationHour = 3600000L , durationDay = 86400000L , durationNoWait = 0L , durationForever = 0x7FFFFFFF } |
| enum | { k8BitAccess = 0 , k16BitAccess = 1 , k32BitAccess = 2 } |
| enum | { kISTChipInterruptSource = 0 , kISTOutputDMAInterruptSource = 1 , kISTInputDMAInterruptSource = 2 , kISTPropertyMemberCount = 3 } |
| enum | { kFirstMemberNumber = 1 , kIsrIsComplete = 0 , kIsrIsNotComplete = -1 , kMemberNumberParent = -2 } |
| enum | { kSourceWasEnabled = true , kSourceWasDisabled = false } |
| enum | { kReturnToParentWhenComplete = 0x00000001 , kReturnToParentWhenNotComplete = 0x00000002 } |
Functions | |
| typedef | CALLBACK_API_C (void, SoftwareInterruptHandler)(void *p1 |
| typedef | CALLBACK_API_C (OSStatus, SecondaryInterruptHandler2)(void *p1 |
| ExecutionLevel | CurrentExecutionLevel (void) |
| TaskID | CurrentTaskID (void) |
| OSStatus | DelayFor (Duration delayDuration) |
| Boolean | InPrivilegedMode (void) |
| OSStatus | CreateSoftwareInterrupt (SoftwareInterruptHandler handler, TaskID task, void *p1, Boolean persistent, SoftwareInterruptID *theSoftwareInterrupt) |
| OSStatus | SendSoftwareInterrupt (SoftwareInterruptID theSoftwareInterrupt, void *p2) |
| OSStatus | DeleteSoftwareInterrupt (SoftwareInterruptID theSoftwareInterrupt) |
| OSStatus | SetInterruptTimer (const AbsoluteTime *expirationTime, SecondaryInterruptHandler2 handler, void *p1, TimerID *theTimer) |
| OSStatus | SetPersistentTimer (Duration frequency, SecondaryInterruptHandler2 theHandler, void *p1, TimerID *theTimer) |
| OSStatus | CancelTimer (TimerID theTimer, AbsoluteTime *timeRemaining) |
| OSStatus | PrepareMemoryForIO (IOPreparationTable *theIOPreparationTable) |
| OSStatus | CheckpointIO (IOPreparationID theIOPreparation, IOCheckpointOptions options) |
| OSStatus | GetPageInformation (AddressSpaceID addressSpace, ConstLogicalAddress base, ByteCount length, PBVersion version, PageInformation *thePageInfo) |
| OSStatus | SetProcessorCacheMode (AddressSpaceID addressSpace, ConstLogicalAddress base, ByteCount length, ProcessorCacheMode cacheMode) |
| OSErr | IOCommandIsComplete (IOCommandID theID, OSErr theResult) |
| OSErr | GetIOCommandInfo (IOCommandID theID, IOCommandContents *theContents, IOCommandCode *theCommand, IOCommandKind *theKind) |
| void | UpdateDeviceActivity (RegEntryID *deviceEntry) |
| void | BlockCopy (const void *srcPtr, void *destPtr, Size byteCount) |
| LogicalAddress | PoolAllocateResident (ByteCount byteSize, Boolean clear) |
| OSStatus | PoolDeallocate (LogicalAddress address) |
| ByteCount | GetLogicalPageSize (void) |
| ByteCount | GetDataCacheLineSize (void) |
| OSStatus | FlushProcessorCache (AddressSpaceID spaceID, LogicalAddress base, ByteCount length) |
| LogicalAddress | MemAllocatePhysicallyContiguous (ByteCount byteSize, Boolean clear) |
| OSStatus | MemDeallocatePhysicallyContiguous (LogicalAddress address) |
| AbsoluteTime | UpTime (void) |
| void | GetTimeBaseInfo (UInt32 *minAbsoluteTimeDelta, UInt32 *theAbsoluteTimeToNanosecondNumerator, UInt32 *theAbsoluteTimeToNanosecondDenominator, UInt32 *theProcessorToAbsoluteTimeNumerator, UInt32 *theProcessorToAbsoluteTimeDenominator) |
| Nanoseconds | AbsoluteToNanoseconds (AbsoluteTime absoluteTime) |
| Duration | AbsoluteToDuration (AbsoluteTime absoluteTime) |
| AbsoluteTime | NanosecondsToAbsolute (Nanoseconds nanoseconds) |
| AbsoluteTime | DurationToAbsolute (Duration duration) |
| AbsoluteTime | AddAbsoluteToAbsolute (AbsoluteTime absoluteTime1, AbsoluteTime absoluteTime2) |
| AbsoluteTime | SubAbsoluteFromAbsolute (AbsoluteTime leftAbsoluteTime, AbsoluteTime rightAbsoluteTime) |
| AbsoluteTime | AddNanosecondsToAbsolute (Nanoseconds nanoseconds, AbsoluteTime absoluteTime) |
| AbsoluteTime | AddDurationToAbsolute (Duration duration, AbsoluteTime absoluteTime) |
| AbsoluteTime | SubNanosecondsFromAbsolute (Nanoseconds nanoseconds, AbsoluteTime absoluteTime) |
| AbsoluteTime | SubDurationFromAbsolute (Duration duration, AbsoluteTime absoluteTime) |
| Nanoseconds | AbsoluteDeltaToNanoseconds (AbsoluteTime leftAbsoluteTime, AbsoluteTime rightAbsoluteTime) |
| Duration | AbsoluteDeltaToDuration (AbsoluteTime leftAbsoluteTime, AbsoluteTime rightAbsoluteTime) |
| Nanoseconds | DurationToNanoseconds (Duration theDuration) |
| Duration | NanosecondsToDuration (Nanoseconds theNanoseconds) |
| OSErr | PBQueueInit (QHdrPtr qHeader) |
| OSErr | PBQueueCreate (QHdrPtr *qHeader) |
| OSErr | PBQueueDelete (QHdrPtr qHeader) |
| void | PBEnqueue (QElemPtr qElement, QHdrPtr qHeader) |
| OSErr | PBEnqueueLast (QElemPtr qElement, QHdrPtr qHeader) |
| OSErr | PBDequeue (QElemPtr qElement, QHdrPtr qHeader) |
| OSErr | PBDequeueFirst (QHdrPtr qHeader, QElemPtr *theFirstqElem) |
| OSErr | PBDequeueLast (QHdrPtr qHeader, QElemPtr *theLastqElem) |
| char * | CStrCopy (char *dst, const char *src) |
| StringPtr | PStrCopy (StringPtr dst, ConstStr255Param src) |
| char * | CStrNCopy (char *dst, const char *src, UInt32 max) |
| StringPtr | PStrNCopy (StringPtr dst, ConstStr255Param src, UInt32 max) |
| char * | CStrCat (char *dst, const char *src) |
| StringPtr | PStrCat (StringPtr dst, ConstStr255Param src) |
| char * | CStrNCat (char *dst, const char *src, UInt32 max) |
| StringPtr | PStrNCat (StringPtr dst, ConstStr255Param src, UInt32 max) |
| void | PStrToCStr (char *dst, ConstStr255Param src) |
| void | CStrToPStr (Str255 dst, const char *src) |
| SInt16 | CStrCmp (const char *s1, const char *s2) |
| SInt16 | PStrCmp (ConstStr255Param str1, ConstStr255Param str2) |
| SInt16 | CStrNCmp (const char *s1, const char *s2, UInt32 max) |
| SInt16 | PStrNCmp (ConstStr255Param str1, ConstStr255Param str2, UInt32 max) |
| UInt32 | CStrLen (const char *src) |
| UInt32 | PStrLen (ConstStr255Param src) |
| OSStatus | DeviceProbe (void *theSrc, void *theDest, UInt32 AccessType) |
| OSStatus | DelayForHardware (AbsoluteTime absoluteTime) |
| typedef | CALLBACK_API_C (InterruptMemberNumber, InterruptHandler)(InterruptSetMember ISTmember |
| typedef | CALLBACK_API_C (void, InterruptEnabler)(InterruptSetMember ISTmember |
| typedef | CALLBACK_API_C (InterruptSourceState, InterruptDisabler)(InterruptSetMember ISTmember |
| OSStatus | CreateInterruptSet (InterruptSetID parentSet, InterruptMemberNumber parentMember, InterruptMemberNumber setSize, InterruptSetID *setID, InterruptSetOptions options) |
| OSStatus | InstallInterruptFunctions (InterruptSetID setID, InterruptMemberNumber member, void *refCon, InterruptHandler handlerFunction, InterruptEnabler enableFunction, InterruptDisabler disableFunction) |
| OSStatus | GetInterruptFunctions (InterruptSetID setID, InterruptMemberNumber member, void **refCon, InterruptHandler *handlerFunction, InterruptEnabler *enableFunction, InterruptDisabler *disableFunction) |
| OSStatus | ChangeInterruptSetOptions (InterruptSetID setID, InterruptSetOptions options) |
| OSStatus | GetInterruptSetOptions (InterruptSetID setID, InterruptSetOptions *options) |
Driver Services Interfaces.
For bug reports, consult the following page on the World Wide Web:
http://developer.apple.com/bugreporter/
| typedef LogicalAddress* DeviceLogicalAddressPtr |
CALL_NOT_IN_CARBON
| typedef UInt32 ExecutionLevel |
Tasking
| typedef struct OpaqueInterruptSetID* InterruptSetID |
Interrupt types
CALL_NOT_IN_CARBON
| typedef struct OpaqueIOPreparationID* IOPreparationID |
Kernel basics
| typedef OptionBits IOPreparationOptions |
For PrepareMemoryForIO and CheckpointIO
| typedef LogicalAddress* LogicalMappingTablePtr |
C's treatment of arrays and array pointers is atypical
| typedef UInt32 ProcessorCacheMode |
For SetProcessorCacheMode
| anonymous enum |
For GetPageInformation (Note: if kPageInformationVersion fails, try 0 – old versions of DSL defined kPageInformationVersion as 0)
| anonymous enum |
| anonymous enum |
| Duration AbsoluteDeltaToDuration | ( | AbsoluteTime | leftAbsoluteTime, |
| AbsoluteTime | rightAbsoluteTime | ||
| ) |
| Nanoseconds AbsoluteDeltaToNanoseconds | ( | AbsoluteTime | leftAbsoluteTime, |
| AbsoluteTime | rightAbsoluteTime | ||
| ) |
| Duration AbsoluteToDuration | ( | AbsoluteTime | absoluteTime | ) |
| Nanoseconds AbsoluteToNanoseconds | ( | AbsoluteTime | absoluteTime | ) |
CALL_NOT_IN_CARBON AbsoluteToNanoseconds()
| AbsoluteTime AddAbsoluteToAbsolute | ( | AbsoluteTime | absoluteTime1, |
| AbsoluteTime | absoluteTime2 | ||
| ) |
| AbsoluteTime AddDurationToAbsolute | ( | Duration | duration, |
| AbsoluteTime | absoluteTime | ||
| ) |
| AbsoluteTime AddNanosecondsToAbsolute | ( | Nanoseconds | nanoseconds, |
| AbsoluteTime | absoluteTime | ||
| ) |
| void BlockCopy | ( | const void * | srcPtr, |
| void * | destPtr, | ||
| Size | byteCount | ||
| ) |
| OSStatus CancelTimer | ( | TimerID | theTimer, |
| AbsoluteTime * | timeRemaining | ||
| ) |
| OSStatus ChangeInterruptSetOptions | ( | InterruptSetID | setID, |
| InterruptSetOptions | options | ||
| ) |
| OSStatus CheckpointIO | ( | IOPreparationID | theIOPreparation, |
| IOCheckpointOptions | options | ||
| ) |
| OSStatus CreateInterruptSet | ( | InterruptSetID | parentSet, |
| InterruptMemberNumber | parentMember, | ||
| InterruptMemberNumber | setSize, | ||
| InterruptSetID * | setID, | ||
| InterruptSetOptions | options | ||
| ) |
Interrupt Services
CreateInterruptSet()
| OSStatus CreateSoftwareInterrupt | ( | SoftwareInterruptHandler | handler, |
| TaskID | task, | ||
| void * | p1, | ||
| Boolean | persistent, | ||
| SoftwareInterruptID * | theSoftwareInterrupt | ||
| ) |
Software Interrupts
CreateSoftwareInterrupt()
| char* CStrCat | ( | char * | dst, |
| const char * | src | ||
| ) |
| SInt16 CStrCmp | ( | const char * | s1, |
| const char * | s2 | ||
| ) |
| char* CStrCopy | ( | char * | dst, |
| const char * | src | ||
| ) |
| UInt32 CStrLen | ( | const char * | src | ) |
| char* CStrNCat | ( | char * | dst, |
| const char * | src, | ||
| UInt32 | max | ||
| ) |
| SInt16 CStrNCmp | ( | const char * | s1, |
| const char * | s2, | ||
| UInt32 | max | ||
| ) |
| char* CStrNCopy | ( | char * | dst, |
| const char * | src, | ||
| UInt32 | max | ||
| ) |
| void CStrToPStr | ( | Str255 | dst, |
| const char * | src | ||
| ) |
| ExecutionLevel CurrentExecutionLevel | ( | void | ) |
Tasks
CurrentExecutionLevel()
| TaskID CurrentTaskID | ( | void | ) |
| OSStatus DelayFor | ( | Duration | delayDuration | ) |
| OSStatus DelayForHardware | ( | AbsoluteTime | absoluteTime | ) |
| OSStatus DeleteSoftwareInterrupt | ( | SoftwareInterruptID | theSoftwareInterrupt | ) |
| OSStatus DeviceProbe | ( | void * | theSrc, |
| void * | theDest, | ||
| UInt32 | AccessType | ||
| ) |
| AbsoluteTime DurationToAbsolute | ( | Duration | duration | ) |
| Nanoseconds DurationToNanoseconds | ( | Duration | theDuration | ) |
| OSStatus FlushProcessorCache | ( | AddressSpaceID | spaceID, |
| LogicalAddress | base, | ||
| ByteCount | length | ||
| ) |
| ByteCount GetDataCacheLineSize | ( | void | ) |
| OSStatus GetInterruptFunctions | ( | InterruptSetID | setID, |
| InterruptMemberNumber | member, | ||
| void ** | refCon, | ||
| InterruptHandler * | handlerFunction, | ||
| InterruptEnabler * | enableFunction, | ||
| InterruptDisabler * | disableFunction | ||
| ) |
| OSStatus GetInterruptSetOptions | ( | InterruptSetID | setID, |
| InterruptSetOptions * | options | ||
| ) |
| OSErr GetIOCommandInfo | ( | IOCommandID | theID, |
| IOCommandContents * | theContents, | ||
| IOCommandCode * | theCommand, | ||
| IOCommandKind * | theKind | ||
| ) |
| ByteCount GetLogicalPageSize | ( | void | ) |
| OSStatus GetPageInformation | ( | AddressSpaceID | addressSpace, |
| ConstLogicalAddress | base, | ||
| ByteCount | length, | ||
| PBVersion | version, | ||
| PageInformation * | thePageInfo | ||
| ) |
Memory Operations
GetPageInformation()
| void GetTimeBaseInfo | ( | UInt32 * | minAbsoluteTimeDelta, |
| UInt32 * | theAbsoluteTimeToNanosecondNumerator, | ||
| UInt32 * | theAbsoluteTimeToNanosecondDenominator, | ||
| UInt32 * | theProcessorToAbsoluteTimeNumerator, | ||
| UInt32 * | theProcessorToAbsoluteTimeDenominator | ||
| ) |
| Boolean InPrivilegedMode | ( | void | ) |
| OSStatus InstallInterruptFunctions | ( | InterruptSetID | setID, |
| InterruptMemberNumber | member, | ||
| void * | refCon, | ||
| InterruptHandler | handlerFunction, | ||
| InterruptEnabler | enableFunction, | ||
| InterruptDisabler | disableFunction | ||
| ) |
| OSErr IOCommandIsComplete | ( | IOCommandID | theID, |
| OSErr | theResult | ||
| ) |
| LogicalAddress MemAllocatePhysicallyContiguous | ( | ByteCount | byteSize, |
| Boolean | clear | ||
| ) |
MemAllocatePhysicallyContiguous()
| OSStatus MemDeallocatePhysicallyContiguous | ( | LogicalAddress | address | ) |
MemDeallocatePhysicallyContiguous()
| AbsoluteTime NanosecondsToAbsolute | ( | Nanoseconds | nanoseconds | ) |
| Duration NanosecondsToDuration | ( | Nanoseconds | theNanoseconds | ) |
| OSErr PBQueueCreate | ( | QHdrPtr * | qHeader | ) |
| OSErr PBQueueDelete | ( | QHdrPtr | qHeader | ) |
| OSErr PBQueueInit | ( | QHdrPtr | qHeader | ) |
| LogicalAddress PoolAllocateResident | ( | ByteCount | byteSize, |
| Boolean | clear | ||
| ) |
| OSStatus PoolDeallocate | ( | LogicalAddress | address | ) |
| OSStatus PrepareMemoryForIO | ( | IOPreparationTable * | theIOPreparationTable | ) |
I/O related Operations
PrepareMemoryForIO()
| SInt16 PStrCmp | ( | ConstStr255Param | str1, |
| ConstStr255Param | str2 | ||
| ) |
| UInt32 PStrLen | ( | ConstStr255Param | src | ) |
| SInt16 PStrNCmp | ( | ConstStr255Param | str1, |
| ConstStr255Param | str2, | ||
| UInt32 | max | ||
| ) |
| void PStrToCStr | ( | char * | dst, |
| ConstStr255Param | src | ||
| ) |
| OSStatus SendSoftwareInterrupt | ( | SoftwareInterruptID | theSoftwareInterrupt, |
| void * | p2 | ||
| ) |
| OSStatus SetInterruptTimer | ( | const AbsoluteTime * | expirationTime, |
| SecondaryInterruptHandler2 | handler, | ||
| void * | p1, | ||
| TimerID * | theTimer | ||
| ) |
CALL_NOT_IN_CARBON TARGET_OS_MAC Timers
SetInterruptTimer()
| OSStatus SetPersistentTimer | ( | Duration | frequency, |
| SecondaryInterruptHandler2 | theHandler, | ||
| void * | p1, | ||
| TimerID * | theTimer | ||
| ) |
| OSStatus SetProcessorCacheMode | ( | AddressSpaceID | addressSpace, |
| ConstLogicalAddress | base, | ||
| ByteCount | length, | ||
| ProcessorCacheMode | cacheMode | ||
| ) |
Processor Cache Related
SetProcessorCacheMode()
| AbsoluteTime SubAbsoluteFromAbsolute | ( | AbsoluteTime | leftAbsoluteTime, |
| AbsoluteTime | rightAbsoluteTime | ||
| ) |
| AbsoluteTime SubDurationFromAbsolute | ( | Duration | duration, |
| AbsoluteTime | absoluteTime | ||
| ) |
| AbsoluteTime SubNanosecondsFromAbsolute | ( | Nanoseconds | nanoseconds, |
| AbsoluteTime | absoluteTime | ||
| ) |
| void UpdateDeviceActivity | ( | RegEntryID * | deviceEntry | ) |
| AbsoluteTime UpTime | ( | void | ) |
CALL_NOT_IN_CARBON UpTime()