iv_event
Section: ivykis programmer's manual (3)
Updated: 201-0-03
Index
Return to Main Contents
NAME
IV_EVENT_INIT, iv_event_register, iv_event_unregister, iv_event_post - manage ivykis objects for event notification
SYNOPSIS
#include <iv_event.h>
struct iv_event {
void *cookie;
void (*handler)(void *);
};
int IV_EVENT_INIT(struct iv_event *this);
int iv_event_register(struct iv_event *this);
void iv_event_unregister(struct iv_event *this);
void iv_event_post(struct iv_event *this);
DESCRIPTION
iv_event
provides a way for delivering events to
ivykis(3)
recipients across thread boundaries.
The intended event recipient calls
IV_EVENT_INIT
on a
struct iv_event
object, fills in
->cookie
and
->handler,
and then calls
iv_event_register
on the object.
To generate an event, call
iv_event_post
on the previously initialized
struct iv_event
object. This will cause the callback specified by
->handler
to be called in the thread that the
struct iv_event
object was registered in, with
->cookie
as its sole argument.
To deinitialize a
struct iv_event
object, call
iv_event_unregister
from the same thread that
iv_event_register
was called from on that object.
It is permitted to unregister a
struct iv_event
object from any ivykis callback function in the thread it was
registered in, including from a callback function triggered by this
object, and it is permitted to free the memory corresponding to an
unregistered object from its own callback function.
iv_event_post
can be called from the same thread that
iv_event_register
was called from, or from a different thread within the same process,
but can not be called from a different process, and can not be called
from signal handlers. If you need this functionality, look at
iv_event_raw(3).
Internally,
iv_event
is implemented as a wrapper around
iv_event_raw(3),
and multiplexes multiple
struct iv_event
objects over pe-thread
struct iv_event_raw
objects, to save file descriptors and kernel resources.
SEE ALSO
ivykis(3),
iv_event_raw(3)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- SEE ALSO
-