Go to main content

man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2017



scsi_hba_init, scsi_hba_fini - SCSI Host Bus Adapter system initialization and completion routines


#include <sys/scsi/scsi.h> 

int scsi_hba_init(struct modlinkage *modlp);
void scsi_hba_fini(struct modlinkage *modlp);

Interface Level

Solaris architecture specific (Solaris DDI).



Pointer to the Host Bus Adapters module linkage structure.



scsi_hba_init() is the system-provided initialization routine for SCSI HBA drivers. The scsi_hba_init() function registers the HBA in the system and allows the driver to accept configuration requests on behalf of SCSI target drivers. The scsi_hba_init() routine must be called in the HBA's _init(9E) routine before mod_install(9F) is called. If mod_install(9F) fails, the HBA's _init(9E) should call scsi_hba_fini() before returning failure.


scsi_hba_fini() is the system provided completion routine for SCSI HBA drivers. scsi_hba_fini() removes all of the system references for the HBA that were created in scsi_hba_init(). The scsi_hba_fini() routine should be called in the HBA's _fini(9E) routine if mod_remove(9F) is successful.

Return Values

scsi_hba_init() returns 0 if successful, and a non-zero value otherwise. If scsi_hba_init() fails, the HBA's _init() entry point should return the value returned by scsi_hba_init().


scsi_hba_init() and scsi_hba_fini() should be called from _init(9E) or _fini(9E), respectively.

See Also

_fini(9E), _init(9E), mod_install(9F), mod_remove(9F), scsi_pktalloc(9F), scsi_pktfree(9F), scsi_hba_tran(9S)

Writing Device Drivers for Oracle Solaris 11.3


The HBA is responsible for ensuring that no DDI request routines are called on behalf of its SCSI target drivers once scsi_hba_fini () is called.