Go to main content

man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2017



scsi_hba_tran_alloc, scsi_hba_tran_free - allocate and free transport structures


#include <sys/scsi/scsi.h>

scsi_hba_tran_t *scsi_hba_tran_alloc(dev_info_t *dip, int flags);
void scsi_hba_tran_free(scsi_hba_tran_t *hba_tran);

Interface Level

Solaris architecture specific (Solaris DDI).



Pointer to a dev_info structure, defining the HBA driver instance.


Flag modifiers. The only possible flag value is SCSI_HBA_CANSLEEP (memory allocation may sleep).


Pointer to a scsi_hba_tran(9S) structure.


For scsi_hba_tran_alloc():

The scsi_hba_tran_alloc() function allocates a scsi_hba_tran(9S) structure for a HBA driver. The HBA must use this structure to register its transport vectors with the system by using scsi_hba_attach_setup(9F).

If the flag SCSI_HBA_CANSLEEP is set in flags, scsi_hba_tran_alloc() may sleep when allocating resources; otherwise it may not sleep, and callers should be prepared to deal with allocation failures.

For scsi_hba_tran_free():

The scsi_hba_tran_free() function is used to free the scsi_hba_tran(9S) structure allocated by scsi_hba_tran_alloc().

Return Values

The scsi_hba_tran_alloc() function returns a pointer to the allocated transport structure, or NULL if no space is available.


The scsi_hba_tran_alloc() function can be called from user, interrupt, or kernel context. Drivers must not allow scsi_hba_tran_alloc() to sleep if called from an interrupt routine.

The scsi_hba_tran_free() function can be called from user, interrupt, or kernel context context.

See Also

scsi_hba_attach_setup(9F), scsi_hba_tran(9S)

Writing Device Drivers for Oracle Solaris 11.3