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 Guide

NOTES


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)

tribblix@gmail.com :: GitHub :: Privacy