putnextctl1(D3DK) —
.IX \f4putnextctl1\fP(D3DK)
NAME
putnextctl1 − send a control message with a one byte parameter to a queue
SYNOPSIS
#include <sys/stream.h>
int putnextctl1(queue_t ∗q, int type, int param);
ARGUMENTS
qPointer to the queue from which the message is to be sent.
typeMessage type (must be control type).
paramOne byte parameter.
DESCRIPTION
putnextctl1 tests the type argument to make sure a data type has not been specified, and then attempts to allocate a message block. putnextctl1 fails if type is M_DATA, M_PROTO, or M_PCPROTO, or if a message block cannot be allocated. If successful, putnextctl calls the put(D2DK) procedure of the queue pointed to by q->q_next, passing it the allocated message with the one byte parameter specified by param.
RETURN VALUE
Upon successful completion, putnextctl1 returns 1. If type is a data type, or if a message block cannot be allocated, 0 is returned.
LEVEL
Base or Interrupt.
NOTES
Does not sleep.
Driver defined basic locks, read/write locks, and sleep locks may not be held across calls to this function.
The q argument to putctl1(D3DK) and putnextctl1 may not reference q_next (for example, an argument of q->q_next is erroneous on a multiprocessor and is disallowed by the DDI/DKI). putnextctl1(q, type, param) is provided as a multiprocessor-safe equivalent to the common call putctl1(q->q_next, type, param), which is no longer allowed.
SEE ALSO
put(D2DK), put(D3DK), putctl(D3DK), putctl1(D3DK), putnextctl(D3DK)
EXAMPLE
See putnextctl(D3DK) for an example of putnextctl1.
DDI/DKI — STREAMS