LDI_ADD_EVENT_HANDLER(9F) Kernel Functions for Drivers
NAME
ldi_add_event_handler - add NDI event service callback handler
SYNOPSIS
#include <sys/ddi_obsolete.h>
int ldi_add_event_handler(
ldi_handle_t lh,
ddi_eventcookie_t ec,
void (*handler)(ldi_handle_t,
ddi_eventcookie_t,
void *, void *) void *arg, ldi_callback_id_t *id);
INTERFACE LEVEL
Obsolete
PARAMETERS
ldi_handle_t lh Layered handle representing event notification device.
ddi_eventcookie_t ec Cookie returned from call to
ldi_get_eventcookie(9F).
void (*handler)(ldi_handle_t, ddi_eventcookie_t, void *, void *) Callback handler for NDI event service notification.
void *arg Pointer to opaque data supplied by caller. Typically, this is a
pointer to the layered driver's softstate structure.
ldi_callback_id_t *id Pointer to registration id, where a unique registration id is
returned. Registration id must be saved and used when calling
ldi_remove_event_handler(9F) to unregister a callback handler.
DESCRIPTION
This function is obsolete and is only maintained for compatibility.
Use of this function is strongly discouraged. For equivalent
functionality provided by new interfaces, see
ldi_ev_get_cookie(9F) and
ldi_ev_register_callbacks(9F).
The
ldi_add_event_handler() function adds a callback handler to be
invoked at the occurrence of the event specified by the cookie.
Adding a callback handler is also known as subscribing to an event.
Upon successful subscription, the handler is invoked when the event
occurs. You can unregister the handler by using
ldi_remove_event_handler(9F).
An instance of a layered driver can register multiple handlers for an
event or a single handler for multiple events. Callback order is not
defined and should be assumed to be random.
The routine handler is invoked with the following arguments:
ldi_handle_t lh Layered handle representing the device for
which the event notification is requested.
ddi_eventcookie_t ec Structure describing event that occurred.
void *arg Opaque data pointer provided by the driver
during callback registration.
void *impl_data Pointer to event specific data defined by the
framework that invokes the callback function.
RETURN VALUES
DDI_SUCCESS Callback handler registered successfully.
DDI_FAILURE Failed to register callback handler. Possible reasons
include lack of resources or a bad cookie.
CONTEXT
The
ldi_add_event_handler() function can be called from user and
kernel contexts only.
SEE ALSO
ldi_ev_get_cookie(9F),
ldi_ev_register_callbacks(9F),
ldi_get_eventcookie(9F),
ldi_remove_event_handler(9F) Writing Device DriversNOTES
Layered drivers must remove all registered callback handlers for a
device instance, represented by the layered handle, by calling
ldi_remove_event_handler(9F) before the layered driver's
detach(9E) routine completes.
April 9, 2016 LDI_ADD_EVENT_HANDLER(9F)