The invocation canputnext(q); is an atomic equivalent of the canput(q->q_next); routine. That is, the STREAMS framework provides whatever mutual exclusion is necessary to insure that dereferencing q through its q_next field and then invoking canput(9F) proceeds without interference from other
threads.
bcanputnext(q, pri); is the equivalent of the bcanput(q->q_next, pri); routine.
canputnext(q); and bcanputnext(q, pri);
should always be used in preference to canput(q->q_next); and bcanput(q->q_next, pri); respectively.
See canput(9F) and bcanput(9F) for further details.
|