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