scsi_hba_pkt_alloc(9F) manual page
Table of Contents
scsi_hba_pkt_alloc, scsi_hba_pkt_free - allocate and free a scsi_pkt
structure
#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);
Solaris architecture
specific (Solaris DDI).
- 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.
scsi_hba_pkt_alloc() allocates space for a scsi_pkt
structure. HBA drivers should 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
scsi_hba_pkt_free()
frees the space allocated for the scsi_pkt(9S)
structure.
scsi_hba_pkt_alloc()
returns a pointer to the scsi_pkt structure, or NULL
if no space is available.
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.
tran_init_pkt(9E)
, scsi_address(9S)
, scsi_pkt(9S)
Table of Contents