#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);
Solaris architecture specific (Solaris DDI).
Pointer to a dev_info_t structure, defining the HBA driver instance.
Pointer to a scsi_address(9S) structure, defining the target instance.
Length in bytes to be allocated for the SCSI command descriptor block (CDB).
Length in bytes to be allocated for the SCSI status completion block (SCB).
Length in bytes to be allocated for a private data area for the target driver's exclusive use.
Length in bytes to be allocated for a private data area for the HBA driver's exclusive use.
Do not wait for resources. Return a NULL pointer.
Wait indefinitely for resources.
Must be NULL.
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() also allocates memory for these scsi_pkt(9S) data areas, and sets these fields to point to the allocated memory:
HBA private data area.
Target driver private data area.
SCSI status completion block.
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.