SCSI_HBA_IPORTMAP_CREATE(9F) Kernel Functions for Drivers

NAME


scsi_hba_iportmap_create, scsi_hba_iportmap_destroy,
scsi_hba_iportmap_iport_add, scsi_hba_iportmap_iport_remove - create
and manage an iportmap

SYNOPSIS


#include <sys/scsi/scsi.h>

int
scsi_hba_iportmap_create(dev_info_t *dip, int csync_usec,
int settle_usec, scsi_hba_iportmap_t **iportmapout);

void
scsi_hba_iportmap_destroy(scsi_hba_iportmap_t *iportmap);

int
scsi_hba_iportmap_iport_add(scsi_hba_iportmap_t *iportmap, char *ua,
void *priv);

int
scsi_hba_iportmap_iport_remove(scsi_hba_iportmap_t *iportmap,
char *ua);

INTERFACE LEVEL


Evolving - This interface is still evolving in illumos. API and ABI
stability is not guaranteed.

PARAMETERS


dip Pointer to dev_info structure.

csync_usec A time in microseconds.

settle_usec A time in microseconds.

iportmap An allocated iportmap.

iportmapout Pointer where the iportmap is stored.

ua A character string that represents a unit address for an
iport.

priv Drivers should pass NULL for this field.

DESCRIPTION


The scsi_hba_iportmap_create() and scsi_hba_iportmap_destroy()
functions are used by HBA drivers to create and destroy an iportmap.
For more information on an iportmap and its purpose, see iportmap(9).

The csync_usec and settle_usec are both times measured in microseconds
that control two different properties of the iportmap and how it
behaves. The value in settle_usec indicates the amount of time that
the system should wait to quiesce all changes and consider the
resulting system stable. Changes will not be reported until after
settle_usec have passed. csync_usec indicates how much time needs to
elapse after creation before an initial enumeration has been completed.

The dev_info structure passed into dip is usually the HBA driver's
dev_info structure.

When the scsi_hba_iportmap_iport() function returns, iportmapout will
be populated with a pointer to an iportmap that can be used to add and
remove iports.

To destroy the iportmap, drivers should use the
scsi_hba_iportmap_destroy() function. As part of destroying the
iportmap, all associated iports will be detached from the system by
having the driver's detach(9E) entry point called.

When the driver needs to add an iport to the system, generally in
response to a hotplug event, then the driver should call the
scsi_hba_iportmap_iport_add() function. The value of ua should be a
character string that uniquely identifies the device. If the driver is
using a phymap, then this unit address should be the same one as the
phymap's callback provided. Otherwise, the driver sets ua to a unique
string which is generally the iport's WWN.

When the corresponding iport needs to be removed, then the driver
should call the scsi_hba_iportmap_remove() function. The iport to
remove is indicated by the ua argument, which should match the value
passed into the scsi_hba_iportmap_add() function.

CONTEXT


The scsi_hba_iportmap_create() function is generally called during a
driver's attach(9E) entry point.

The scsi_hba_iportmap_destroy() function is generally called during a
driver's detach(9E) entry point.

The scsi_hba_iportmap_iport_add() and scsi_hba_iportmap_iport_remove()
functions should be called from kernel context.

RETURN VALUES


Upon successful completion, the scsi_hba_iportmap_create(),
scsi_hba_iportmap_iport_add(), and scsi_hba_iportmap_iport_remove()
functions return DDI_SUCCESS. Otherwise, DDI_FAILURE is returned.

SEE ALSO


iport(9), iportmap(9), attach(9E), detach(9E)

illumos April 18, 2017 illumos

tribblix@gmail.com :: GitHub :: Privacy