Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


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

       IV_EVENT_INIT,  iv_event_register, iv_event_unregister, iv_event_post -
       manage ivykis objects for event notification

       #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);

       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_regis-
       ter 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	 call-
       back 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

       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.

       ivykis(3), iv_event_raw(3)

ivykis				  2010-09-03			   iv_event(3)


Want to link to this manual page? Use this URL:

home | help