PATH 
ADC Home > Documentation > Hardware > Device Managers and Drivers > PCI Card Services > Designing PCI Cards and Drivers for Power Macintosh Computers


  

Service Limitations

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:

Close

Initialize

Finalize

Open

Replace

Superseded

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 

Routine

Task level

Secondary interrupt level

Hardware interrupt level

Memory allocation

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 · · ·

1. May be called from a native driver's DoDriverIO routine and from any subroutine called from DoDriverIO
2. The size of the property must not change.

© 1999 Apple Computer, Inc. – (Last Updated 26 March 99)