Provided by: libivykis-dev_0.36.2-1_amd64 bug

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)