canput(D3)

canput - test for room in a message queue

As shipped in IRIX 6.5.15. Unchanged since IRIX 6.5.

NAME
     canput - test for room in a message queue

SYNOPSIS
     #include <sys/stream.h>
     #include <sys/ddi.h>
     int canput(queue_t *q);

   Arguments
     q         Pointer to the message queue.

DESCRIPTION
     canput tests if there is room for a message in the queue pointed to by q.
     The queue must have a service procedure.

   Return Values
     canput returns 1 if a message can be placed on the queue.  0 is returned
     if a message cannot be enqueued because of flow control.

USAGE
     The driver is responsible for both testing a queue with canput and
     refraining from placing a message on the queue if canput fails.

     It is possible because of race conditions to test for room using canput
     and get an indication that there is room for a message, and then have the
     queue fill up before subsequently enqueuing the message, causing a
     violation of flow control.  This is not a problem, since the violation of
     flow control in this case is bounded.

   Level
     Base or Interrupt.

   Synchronization Constraints
     Does not sleep.

     Driver-defined basic locks, read/write locks, and sleep locks may be held
     across calls to this function.

   Examples
     See bufcall(D3) for an example of canput.

REFERENCES
     bcanput(D3), putbq(D3), putnext(D3)