QASSOCIATE(9F)          Kernel Functions for Drivers          QASSOCIATE(9F)
NAME
       qassociate - associate STREAMS queue with driver instance
SYNOPSIS
       #include <sys/types.h>
       #include <sys/stream.h>
       #include <sys/stropts.h>
       #include <sys/ddi.h>
       #include <sys/sunddi.h>       
int qassociate(
queue_t *q, 
int instanceINTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       queue_t *q                       Pointer to a 
queue(9S) structure. Either the read or
                       write queue can be used.       
int instance                       Driver instance number or -1.
DESCRIPTION
       The 
qassociate() function must be used by 
DLPI style 2 device drivers
       to manage the association between STREAMS queues and device
       instances.  The 
gld(4D) does this automatically on behalf of drivers
       based on it. It is recommended that the 
gld(4D) be used for network
       device drivers whenever possible.
       The 
qassociate() function associates the specified STREAMS queue with
       the specified instance of the bottom driver in the queue. Upon
       successful return, the stream is associated with the instance with
       any prior association dissolved.
       A DLPI style 2 driver calls 
qassociate() while processing the       
DL_ATTACH_REQ message. The driver is also expected to call this
       interface while performing stream associations through other means,
       such as 
ndd(8) ioctl commands.
       If 
instance is -1, the stream is left unassociated with any hardware
       instance.
       If the interface returns failure, the stream is not associated with
       the specified instance. Any prior association is left untouched.
       The interface typically fails because of failure to locate and attach
       the device instance. The interface never fails if the specified
       instance is -1.
CONTEXT
       The 
qassociate() function can be called from the stream's 
put(9E)       entry point.
RETURN VALUES
       0             Success.       
-1             Failure.
EXAMPLES
       DLPI style 2 network driver 
DL_ATTACH_REQ code specifies:
         if (qassociate(q, instance) != 0)
                         goto fail;
       The association prevents Dynamic Reconfiguration (DR) from detaching
       the instance.
       DLPI style 2 network driver 
DL_DETACH code specifies:
         (void) qassociate(q, -1);
       This dissolves the queue's association with any device instance.
       DLPI style 2 network driver 
open(9E) code must call:
         qassociate(q, -1);
       This informs the framework that this driver has been modified to be
       DDI-compliant.
SEE ALSO
       gld(4D), 
dlpi(4P), 
open(9E), 
put(9E), 
ddi_no_info(9F), 
queue(9S)                              February 1, 2007                QASSOCIATE(9F)