PUT(9F) Kernel Functions for Drivers PUT(9F)
NAME
put - call a STREAMS put procedure
SYNOPSIS
#include <sys/stream.h>
#include <sys/ddi.h>
void put(
queue_t *q,
mblk_t *mp);
INTERFACE LEVEL
Architecture independent level 1 (DDI/DKI).
PARAMETERS
q Pointer to a STREAMS queue.
mp Pointer to message block being passed into queue.
DESCRIPTION
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.
CONTEXT
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.
SEE ALSO
put(9E),
freezestr(9F),
putctl(9F),
putctl1(9F),
putnext(9F),
putnextctl(9F),
putnextctl1(9F),
qprocson(9F),
qreply(9F) Writing Device Drivers STREAMS Programming GuideNOTES
The caller cannot have the stream frozen when calling this function. See
freezestr(9F).
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.
April 28, 1992
PUT(9F)