Kernel Functions for Drivers ddifmereportpost(9F)
NAME
ddifmereportpost - post an FMA Protocol Error Report
Event
SYNOPSIS
#include
void ddifmereportpost(devinfot *dip, char *ereportclass,
uint64t ena, int *sflag, ... /* name-value pair args */);
INTERFACE LEVEL
Solaris DI specific (Solaris DI)
PARAMETERS
dip Pointer to the devinfo structure
ereportclass FMA Event Protocol error class
ena Error Numeric Association
sflag Determines whether caller can sleep for
memory or other event resources.
DESCRIPTION
The ddifmereportpost() function causes an encoded fault
management error report name-value pair list to be queued
for delivery to the Fault Manager daemon, fmd(1M). The sflag
parameter indicates whether or not the caller is willing to
wait for system memory and event channel resources to become
available.
The following ereportclass strings are available for use by
any leaf device driver:
device.invalstate A leaf driver discovers that the
device is in an invalid or incon-
sistent state. For example, the
driver might detect that receive or
send ring descriptor indices are
corrupted. It might also find an
invalid value in a register or a
driver-to-device protocol violation.
device.noresponse A leaf driver times out waiting for
a response from the device. For
SunOS 5.11 Last change: 14 May 2007 1
Kernel Functions for Drivers ddifmereportpost(9F)
example, timeouts can occur when no
confirmation is seen after reset-
ting, enabling, or disabling part of
the device.
device.badintlimit A leaf device sends too many con-
secutive interrupts with no work to
do.
device.interncorr A leaf device reports to the driver
that it has itself detected an
internal correctable error.
device.internuncorr A leaf device reports to the driver
that it has itself detected an
internal uncorrectable error.
device.stall A leaf driver determines that data
transmission has stalled indefin-
itely.
The ena indicates the Format 1 Error Numeric Association for
this error report. It might have already been initialized by
another error-detecting software module. For example, if
ddifmereportpost() is called from an error handler call-
back function, the fmeena field from the passed-in
ddifmerror argument should be used. Otherwise it should be
set to 0 and will be initialized by ddifmereportpost().
The name-value pair args variable argument list contains one
or more (names, type, value pointer) nvpair tuples for non-
array datatypet types or one or more (name, type, number
of elements, value pointer) tuples for datatypet array
types. There is one mandatory tuple to describe the ereport
version. This should contain the following values:
o name - FMVERSION
o type - DATATYPEUINT8
o value - FMEREPORTVERS0
Additional nvpair tuples can describe error conditions for
logging purposes, but are not interpreted by the I/O
SunOS 5.11 Last change: 14 May 2007 2
Kernel Functions for Drivers ddifmereportpost(9F)
framework or fault manager. The end of the argument list is
specified by NUL.
CONTEXT
The ddifmereportpost() function can be called from user,
kernel, or high-level interrupt context.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Committed
SEE ALSO
fmd(1M), attributes(5), ddifmserviceimpact(9F)
SunOS 5.11 Last change: 14 May 2007 3
|