NAME | SYNOPSIS | PARAMETERS | INTERFACE LEVEL | DESCRIPTION | CONTEXT | SUMMARY OF TRUSTED SOLARIS CHANGES | SEE ALSO | NOTES
#include <sys/stream.h> #include <sys/ddi.h>void put(queue_t *q, mblk_t *mp);
Architecture independent level 1 (DDI/DKI).
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.
This routine will try to assign attribute structures to the mblks of a message that does not have one. The first attribute stucture found will be used. If a stream module illegally combined messages, mblks can have different attribute structures; in that case, the message will be dropped by this routine unless overridden by the TSOL_STR_LINKB flag.
The caller cannot have the stream frozen when calling this function. See freezestr(9F).
These interfaces are uncommitted. Although not expected to do so, they may change between minor Trusted Solaris releases.
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.
NAME | SYNOPSIS | PARAMETERS | INTERFACE LEVEL | DESCRIPTION | CONTEXT | SUMMARY OF TRUSTED SOLARIS CHANGES | SEE ALSO | NOTES