scsi_hba_pkt_alloc(9F)




NAME

     scsi_hba_pkt_alloc, scsi_hba_pkt_free - allocate and free  a
     scsi_pkt structure


SYNOPSIS

     #include <sys/scsi/scsi.h>

     struct scsi_pkt *scsi_hba_pkt_alloc(dev_info_t *dip,  struct
     scsi_address *ap, int cmdlen, int statuslen, int tgtlen, int
     hbalen, int (*callback, caddr_t arg, caddr_t arg);

     void  scsi_hba_pkt_free(struct  scsi_address   *ap,   struct
     scsi_pkt *pkt);


INTERFACE LEVEL

     Solaris architecture specific (Solaris DDI).


PARAMETERS

     dip   Pointer to a dev_info_t structure,  defining  the  HBA
           driver instance.

     ap    Pointer to a scsi_address(9S) structure, defining  the
           target instance.

     cmdlen
           Length in bytes to be allocated for the  SCSI  command
           descriptor block (CDB).

     statuslen
           Length in bytes to be allocated for  the  SCSI  status
           completion block (SCB).

     tgtlen
           Length in bytes to be allocated  for  a  private  data
           area for the target driver's exclusive use.

     hbalen
           Length in bytes to be allocated  for  a  private  data
           area for the HBA driver's exclusive use.

     callback
           Indicates what  scsi_hba_pkt_alloc()  should  do  when
           resources are not available:

           NULL_FUNC
                 Do  not  wait  for  resources.   Return  a  NULL
                 pointer.

           SLEEP_FUNC
                 Wait indefinitely for resources.

     arg   Must be NULL.

     pkt   A pointer to a scsi_pkt(9S) structure.


DESCRIPTION

     For scsi_hba_pkt_alloc():

     scsi_hba_pkt_alloc() allocates space for a  scsi_pkt  struc-
     ture.  HBA drivers must use this interface when allocating a
     scsi_pkt from their tran_init_pkt(9E) entry point.

     If callback  is   NULL_FUNC,  scsi_hba_pkt_alloc()  may  not
     sleep  when  allocating  resources,  and  callers  should be
     prepared to deal with allocation failures.

     scsi_hba_pkt_alloc() copies the  scsi_address(9S)  structure
     pointed   to   by   ap  to  the  pkt_address  field  in  the
     scsi_pkt(9S).

     scsi_hba_pkt_alloc()  also  allocates   memory   for   these
     scsi_pkt(9S)  data  areas, and sets these fields to point to
     the allocated memory:

          pkt_ha_private
                HBA private data area.

          pkt_private
                Target driver private data area.

          pkt_scbp
                SCSI status completion block.

          pkt_cdbp
                SCSI command descriptor block.

     For scsi_hba_pkt_free():

     scsi_hba_pkt_free()  frees  the  space  allocated  for   the
     scsi_pkt(9S) structure.


RETURN VALUES

     scsi_hba_pkt_alloc()  returns  a  pointer  to  the  scsi_pkt
     structure, or NULL if no space is available.


CONTEXT

     scsi_hba_pkt_alloc() can be called from  user  or  interrupt
     context.  Drivers  must  not  allow  scsi_hba_pkt_alloc() to
     sleep if called from an interrupt routine.

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


SEE ALSO

     tran_init_pkt(9E), scsi_address(9S), scsi_pkt(9S)

     Writing Device Drivers


Man(1) output converted with man2html