The Driver Services Library provides the following I/O parameter block queue manipulation functions:
OSErr PBQueueCreate (QHdrPtr *qHeader);
OSErr PBQueueInit (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);
PBQueueCreate creates a new I/O parameter block queue. PBQueueInit initializes it and PBQueueDelete deletes it. PBEnqueue places the element pointed to by qElement next in the queue and PBEnqueueLast places it last. PBDequeue removes the next element in the queue. PBDequeueFirst removes the first element and PBDequeueLast removes the last element. For detailed information about the I/O parameter block queue, see Inside Macintosh: OS Utilities.
The three queue routines, PBQueueInit, PBQueueCreate, and PBQueueDelete, may be called only from task level, not from software or hardware interrupt level.
The five queue element routines may be called from task level, secondary interrupt level, or hardware interrupt level.