|Kernel Functions for Drivers||put(9F)
| ||put - call a STREAMS put procedure
void put(queue_t *q, mblk_t *mp);
Architecture independent level 1 (DDI/DKI).
- Pointer to a STREAMS queue.
to message block being passed into queue.
put() calls the put procedure ( put(9E) entry point) for the STREAMS queue
specified by q, passing it the message block referred
to by mp. It is typically used by a driver or module
to call its own put procedure.
put() can be called from a STREAMS module or driver
put or service routine, or from an associated interrupt handler, timeout,
bufcall, or esballoc call-back. In the latter cases, the calling code must
guarantee the validity of the q argument.
Since put() may cause re-entry of the module (as
it is intended to do), mutexes or other locks should not be held across
calls to it, due to the risk of single-party deadlock (put(9E), putnext(9F), putctl(9F), qreply(9F)).
This function is provided as a DDI/DKI conforming replacement for a direct
call to a put procedure.
The caller cannot have the stream frozen when calling this function.
DDI/DKI conforming modules and drivers are no longer permitted to
call put procedures directly, but must call through the appropriate STREAMS
utility function, for example, put(9E), putnext(9F), putctl(9F),
and qreply(9F). This function is provided
as a DDI/DKI conforming replacement for a direct call to a put procedure.
The put() and putnext() functions
should be called only after qprocson() is finished.