svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
ddi_fm_acc_err_get(9f)
ddi_fm_acc_err_get(9F) Kernel Functions ddi_fm_acc_err_get(9F)
NAME
ddi_fm_acc_err_get, ddi_fm_dma_err_get - get the error status for an
access or DMA handle
SYNOPSIS
#include <sys/ndifma.h>
void ddi_fm_acc_err_get(ddi_acc_handle_t acc_handle,
ddi_fm_error_t *error_status, int version);
void ddi_fm_dma_err_get(ddi_dma_handle_t dma_handle,
ddi_fm_error_t *error_status, int version);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI)
PARAMETERS
acc_handle Data access handle obtained from a previous call to
ddi_regs_map_setup(9F), ddi_dma_mem_alloc(9F), or to a
similar function.
dma_handle DMA handle obtained from a previous call to
ddi_dma_mem_alloc(9F) or one of its derivatives.
error_status Pointer to where the error status for the access or DMA
handle should be returned.
version Version number of ddi_fm_error_t. The driver should
always set this to DDI_FME_VERSION.
DESCRIPTION
The ddi_fm_dma_err_get() and ddi_fm_acc_err_get() functions return the
error status for a DMA or access handle, respectively. If a fault has
occurred that affects the resource mapped by the supplied handle, the
supplied error_status structure is updated to reflect error information
captured during error handling by a bus or other device driver in the
I/O data path. When no error has occurred, error_status.fme_status is
set to DDI_FM_OK.
If an error is indicated for an access handle, the driver might no
longer be able to access the mapped registers or memory using pro‐
grammed I/O through the handle. Typically, this might occur after the
device has failed to respond to an I/O access, such as in the case of a
bus error or a timeout. The effect of programmed I/O access made at the
time of a fault is undefined. Read access via ddi_get8(9F), for exam‐
ple, can return random values, while write access via ddi_put8(9F)
might or might not have an effect. It is possible, however, that the
error might be transient. In that case, the driver can attempt to
recover by calling ddi_fm_acc_err_clear(), resetting the device to
return it to a known state, then retrying any potentially failed trans‐
actions.
If an error is indicated for a DMA handle, it implies that an error has
been detected that has or will affect DMA transactions between the
device and the memory currently bound to the handle, or to the memory
most recently bound if the handle is currently unbound. Possible causes
include the failure of a component in the DMA data path or an attempt
by the device to make an invalid DMA access. The contents of any memory
currently or previously bound to the handle should be considered inde‐
terminate. The driver might be able to continue by freeing memory that
is bound to the handle back to the system, resetting the device to
return it to a known state, then retrying any potentially failed trans‐
actions.
If the driver is unable to recover, the operating state should be
changed by a call to ddi_fm_service_impact() that specifies DDI_SER‐
VICE_LOST for the impacted device instance. If the recovery and retry
succeed, a call should still be made to ddi_fm_service_impact() but
DDI_SERVICE_UNAFFECTED should be specified.
CONTEXT
The ddi_fm_acc_err_get() and ddi_fm_dma_err_get() functions can be
called from user, kernel, or high-level interrupt context.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Interface StabilityCommitted
SEE ALSO
attributes(7), ddi_dma_mem_alloc(9F), ddi_fm_acc_err_clear(9F),
ddi_fm_service_impact(9F), ddi_get8(9F), ddi_put8(9F),
ddi_regs_map_setup(9F), ddi_fm_error(9S),
Writing Device Drivers in Oracle Solaris 11.4
Oracle Solaris 11.4 8 Jan 2010 ddi_fm_acc_err_get(9F)