home | help
iv_event(3)		   ivykis programmer's manual		     iv_event(3)

NAME
     IV_EVENT_INIT, iv_event_register, iv_event_unregister, iv_event_post - man-
     age 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  ob-
     ject,  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 ->han-
     dler to be called in the thread that the struct iv_event object was  regis-
     tered 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 func-
     tion.

     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)

ivykis				   2010-09-03			     iv_event(3)

home | help