Kernel Functions for Drivers ldi_add_event_handler(9F)
NAME
ldi_add_event_handler - add NDI event service callback
handlerSYNOPSIS
#include
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
ObsoletePARAMETERS
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 usedwhen calling ldi_remove_event_handler(9F) to unregister
a callback handler.DESCRIPTION
This function is obsolete and is only maintained for compa-
tibility. Use of this function is strongly discouraged. For equivalent functionality provided by new interfaces, seeldi_ev_get_cookie(9F) and ldi_ev_register_callbacks(9F).
SunOS 5.11 Last change: 21 Aug 2007 1
Kernel Functions for Drivers ldi_add_event_handler(9F)
The ldi_add_event_handler() function adds a callback handler
to be invoked at the occurance of the event specified by thecookie. Adding a callback handler is also known as subscrib-
ing to an event. Upon successful subscription, the handler is invoked when the event occurs. You can unregister thehandler 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 dev-
ice 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)
SunOS 5.11 Last change: 21 Aug 2007 2
Kernel Functions for Drivers ldi_add_event_handler(9F)
Writing Device Drivers NOTES Layered drivers must remove all registered callback handlers for a device instance, represented by the layered handle, bycalling ldi_remove_event_handler(9F) before the layered
driver's detach(9E) routine completes.SunOS 5.11 Last change: 21 Aug 2007 3