[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    putnextctl1(9F) manual page Table of Contents

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 p);

Interface Level

Architecture independent level 1 (DDI/DKI).

Arguments

q
Queue to which the message is to be sent.
type
Type of message.
p
One-byte parameter.

Description

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) .

Return Values

On success, 1 is returned. 0 is returned if type is a data type, or if a message block cannot be allocated.

Context

putnextctl1() can be called from user or interrupt context.

Example

See the putnextctl(9F) function page for an example of putnextctl1().

See Also

put(9E) , allocb(9F) , datamsg(9F) , putctl1(9F) , putnextctl(9F)



Table of Contents