Table 11-2 lists the DSL routines that can be called at the different interrupt levels described in Device Driver Execution Contexts. A dot (·) in the column indicates that the service is available at that level.
The righthand column in Table 11-2 identifies memory allocation services. These services can be called only from task level, and not from a software interrupt. Memory allocation and deallocation can occur when a native driver processes the any of following commands:
The Name Registry routines RegistryPropertyGet and RegistryPropertyGetSize are available at secondary interrupt level. All other Name Registry routines are available only at task level.
Applications can freely use the Name Registry and the Driver Loader Library, but with the current release of Mac OS only drivers should use the Driver Services Library.
IMPORTANT
It is the responsibility of the driver writer to conform to these limitations; code that violates them will not work with future releases of Mac OS.
Table 11-2 Services available to drivers
AbsoluteDeltaToDuration | · | · | · | |
AbsoluteDeltaToNanoseconds | · | · | · | |
AbsoluteToDuration | · | · | · | |
AbsoluteToNanoseconds | · | · | · | |
AddAbsoluteToAbsolute | · | · | · | |
AddAtomic | · | · | · | |
AddAtomic8 | · | · | · | |
AddAtomic16 | · | · | · | |
AddDurationToAbsolute | · | · | · | |
AddNanosecondsToAbsolute | · | · | · | |
BitAndAtomic | · | · | · | |
BitAndAtomic8 | · | · | · | |
BitAndAtomic16 | · | · | · | |
BitOrAtomic | · | · | · | |
BitOrAtomic8 | · | · | · | |
BitOrAtomic16 | · | · | · | |
BitXorAtomic | · | · | · | |
BitXorAtomic8 | · | · | · | |
BitXorAtomic16 | · | · | · | |
BlockCopy | · | · | · | |
BlockMove | · | · | · | |
BlockMoveData | · | · | · | |
BlockMoveDataUncached | · | · | · | |
BlockMoveUncached | · | · | · | |
BlockZero | · | · | · | |
BlockZeroUncached | · | · | · | |
CallSecondaryInterruptHandler2 | · | · | ||
CancelTimer | · | · | · | |
ChangeInterruptSetOptions | · | |||
CheckpointIO | · | · | ||
CompareAndSwap | · | · | · | |
CreateInterruptSet | · | |||
CreateSoftwareInterrupt | · | · | ||
CStrCat | · | · | · | |
CStrCmp | · | · | · | |
CStrCopy | · | · | · | |
CStrLen | · | · | · | |
CStrNCat | · | · | · | |
CStrNCopy | · | · | · | |
CStrToPStr | · | · | · | |
CurrentExecutionLevel | · | · | · | |
CurrentTaskID | · | |||
DecrementAtomic | · | · | · | |
DecrementAtomic8 | · | · | · | |
DecrementAtomic16 | · | · | · | |
DelayFor | · | |||
DelayForHardware | · | · | · | |
DeleteSoftwareInterrupt | · | · | ||
DeviceProbe | · | |||
DurationToAbsolute | · | · | · | |
DurationToNanoseconds | · | · | · | |
FlushProcessorCache | · | · | · | |
GetDataCacheLineSize | · | · | · | |
GetInterruptFunctions | · | |||
GetInterruptSetOptions | · | |||
GetIOCommandInfo | · | · | ||
GetLogicalPageSize | · | · | · | |
GetPageInformation | · | |||
GetTimeBaseInfo | · | · | · | |
IncrementAtomic | · | · | · | |
IncrementAtomic8 | · | · | · | |
IncrementAtomic16 | · | · | · | |
InstallInterruptFunctions | · | |||
IOCommandIsComplete | · | · | ||
MemAllocatePhysicallyContiguous | · | · | ||
MemDeallocatePhysicallyContiguous | · | · | ||
NanosecondsToAbsolute | · | · | · | |
NanosecondsToDuration | · | · | · | |
PBDequeue | · | · | · | |
PBDequeueFirst | · | · | · | |
PBDequeueLast | · | · | · | |
PBEnqueue | · | · | · | |
PBEnqueueLast | · | · | · | |
PBQueueCreate | · | |||
PBQueueDelete | · | |||
PBQueueInit | · | |||
PoolAllocateResident | · | · | ||
PoolDeallocate | · | · | ||
PrepareMemoryForIO 1 | · | · | ||
PStrCat | · | · | · | |
PStrCmp | · | · | · | |
PStrCmp | · | · | · | |
PStrCopy | · | · | · | |
PStrLen | · | · | · | |
PStrNCat | · | · | · | |
PStrNCmp | · | · | · | |
PStrNCopy | · | · | · | |
PStrToCStr | · | · | · | |
QueueSecondaryInterruptHandler | · | · | · | |
RegistryPropertyGet | · | · | ||
RegistryPropertyGetSize | · | · | ||
RegistryPropertySet 2 | · | |||
SendSoftwareInterrupt | · | · | ||
SetInterruptTimer | · | · | · | |
SetProcessorCacheMode | · | |||
SubAbsoluteFromAbsolute | · | · | · | |
SubDurationFromAbsolute | · | · | · | |
SubNanosecondsFromAbsolute | · | · | · | |
SynchronizeIO | · | · | · | |
SysDebug | · | · | · | |
SysDebugStr | · | · | · | |
TestAndClear | · | · | · | |
TestAndSet | · | · | · | |
UpTime | · | · | · |