Man page - iv_event_register(3)
Packages contas this manual
- iv_fd_pump_init(3)
- iv_timer_register(3)
- iv_timer_unregister(3)
- iv_fd_pump(3)
- iv_wait_interest_register(3)
- iv_event_raw_post(3)
- iv_timer_registered(3)
- iv_signal_unregister(3)
- iv_thread(3)
- iv_signal(3)
- iv_inited(3)
- iv_tls_user_ptr(3)
- iv_event_raw_unregister(3)
- iv_popen_request_submit(3)
- iv_fd_set_handler_out(3)
- ivykis(3)
- iv_tls(3)
- iv_fd_unregister(3)
- iv_examples(3)
- iv_wait_interest_register_spawn(3)
- iv_invalidate_now(3)
- iv_work_pool_create(3)
- iv_inotify_watch_register(3)
- iv_inotify(3)
- iv_validate_now(3)
- iv_task_registered(3)
- iv_fatal(3)
- iv_event_raw_register(3)
- iv_thread_create(3)
- iv_quit(3)
- iv_task(3)
- iv_task_register(3)
- iv_fd_set_handler_in(3)
- iv_set_fatal_msg_handler(3)
- iv_event_post(3)
- iv_deinit(3)
- iv_init(3)
- iv_event_register(3)
- iv_fd(3)
- iv_fd_registered(3)
- iv_work_pool_submit_work(3)
- iv_time(3)
- iv_inotify_watch_unregister(3)
- iv_event_raw(3)
- iv_fd_pump_destroy(3)
- iv_fd_register_try(3)
- iv_signal_register(3)
- iv_inotify_unregister(3)
- iv_event(3)
- iv_thread_set_debug_state(3)
- iv_work_pool_put(3)
- iv_fd_pump_is_done(3)
- iv_fd_register(3)
- iv_inotify_register(3)
- iv_task_unregister(3)
- iv_timer(3)
- iv_event_unregister(3)
- iv_wait(3)
- iv_fd_pump_pump(3)
- iv_work(3)
- iv_fd_set_handler_err(3)
- iv_tls_user_register(3)
- iv_popen(3)
- iv_main(3)
- iv_wait_interest_unregister(3)
- iv_popen_request_close(3)
apt-get install libivykis-dev
Manual
| iv_event(3) | ivykis programmer's manual | iv_event(3) |
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 per-thread struct iv_event_raw objects, to save file descriptors and kernel resources.
SEE ALSO
ivykis(3), iv_event_raw(3)
| 2010-09-03 | ivykis |