

 
Open Transport provides many STREAMS services for module and driver writers, but not all of these services may be used at interrupt time.
The following STREAMS functions may be safely called at interrupt time:
 
allocb          adjmsg          copyb           copymsg         dupb
 
dupmsg          esballoc        freeb           freemsg         linkb
 
msgdsize        msgpullup       pullupmsg       rmbv            testb
 
unlinkb         datamsg         OTHERQ          RD              WR
 
bzero           bcopy           bcmp            putq
The putq function may be used only to put a packet onto its lower (read) queue. No other put operation is allows at interrupt time. In particular, the canput function and its variants, as well as the queue enabling and put functions, cannot be called at primary interrupt time.
The following Open Transport functions may be safely called at interrupt time:
 
OTCreateDeferredTask                OTDestroyDeferredTask
 
OTScheduleDeferredTask              OTGetClockTimeInSecs
 
OTGetTimeStamp                      OTSubtractTimeStamps
 
OTTimeStampInMilliseconds           OTTimeStampInMicroseconds
 
OTElapsedMilliseconds               OTElapsedMicroseconds
 
cmn_err             OTAllocMsg              OTAllocMem
 
OTFreeMem           mi_timer_alloc          mi_timer_free
 
mi_timer            mi_timer_cancel
In addition, all functions described in Atomic Services may be called at interrupt time.