B.3 Services Available to STREAMS Drivers and Modules

This contains information about the following topics:

B.3.1 UNIX SVR4 STREAMS Utility Routines

STREAMS provides the functions and macros listed below, with the functionality specified in Further Readings on Streams, Reference 1. In Windows NT, unbufcall returns 1 if it has successfully canceled a bufcall request, -1 if its argument is invalid, or 0 if the bufcall request cannot be canceled.

Note  In Windows NT, it is possible for unbufcall to fail even thought the bufcall handler has not yet executed. In this case, the execution of the bufcall handler will be pending. Alternately, the handler may already be executing and spinning on a lock currently held by the transport. Often, a bufcall handler will be passed a pointer to a transport structure. If that structure is freed and the bufcall cannot be canceled, the handler will execute and possibly modify memory no longer owned by the transport. A transport must be prepared to handle these circumstances in a safe manner, or system crashes will result.

Priority bands are not supported by STREAMS.
Buffer Management:

adjmsg
dupmsg
pullupmsg
allocb
esballoc (1)
qsize
bufcall
flushq
rmvb
copyb
freeb
rmvq
copymsg
freemsg
testb
datamsg
linkb
unbufcall (1)
dupb
msgdsize
unlinkb

Message Passing:
putnext
putctl
putctl1
qreply
Flow Control and Scheduling:
canput
insq
putq

enableok
noenable
qenable
getq
putbq
Queue Management:
backq
OTHERQ
strqget (1)
getadmin (1)
RD
strqset (1)
getmid (1)
SAMESTR
WR
Not Supported:
bcanput (1)
bcanputnext
flushband (1

)

 (1) New in UNIX SVR4cd ddk_br