putnextctl1(9F) manual page
Table of Contents
putnextctl1 - send a control message with a one-byte parameter to a
queue
#include <sys/stream.h>
int putnextctl1(queue_t *q, int type, int p);
Architecture
independent level 1 (DDI/DKI).
- q
- Queue to which the message is
to be sent.
- type
- Type of message.
- p
- One-byte parameter.
putnextctl1(),
like putctl1(9F)
, tests the type argument to make sure a data type has
not been specified, and attempts to allocate a message block. The p parameter
can be used, for example, to specify how long the delay will be when an
M_DELAY
message is being sent. putnextctl1() fails if type is M_DATA
,
M_PROTO
, or M_PCPROTO
, or if a message block cannot be allocated. If successful,
putnextctl1() calls the put(9E)
routine of the queue pointed to by q
with the newly allocated and initialized message.
A call to putnextctl1(q,
type, p) is an atomic equivalent of putctl1(q->q_next, type, p). The STREAMS
framework provides whatever mutual exclusion is necessary to insure that
dereferencing q through its q_next field and then invoking putctl1(9F)
proceeds without interference from other threads.
putnextctl1() should always
be used in preference to putctl1(9F)
.
On success, 1 is returned.
0 is returned if type is a data type, or if a message block cannot be
allocated.
putnextctl1() can be called from user or interrupt context.
See the putnextctl(9F)
function page for an example of putnextctl1().
put(9E)
, allocb(9F)
, datamsg(9F)
, putctl1(9F)
, putnextctl(9F)
Table of Contents