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

FreeBSD Manual Pages


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

       IV_SIGNAL_INIT,	iv_signal_register, iv_signal_unregister - ivykis sig-
       nal handling

       #include	<iv_signal.h>

       struct iv_signal	{
	       int	       signum;
	       unsigned	int    flags;
	       void	       *cookie;
	       void	       (*handler)(void *);

       void IV_SIGNAL_INIT(struct iv_signal *this);
       int iv_signal_register(struct iv_signal *this);
       void iv_signal_unregister(struct	iv_signal *this);

       iv_signal provides a way	for ivykis(3)  applications  to	 handle	 POSIX
       signals,	by integrating them with the ivykis event loop.

       An  ivykis  application desiring	signal notification registers a	struct
       iv_signal object	 by  calling  iv_signal_register,  after  having  ini-
       tialised	 it  with IV_SIGNAL_INIT and subsequently having filled	in the
       ->signum, ->cookie and ->handler	members.

       Once the	signal indicated by ->signum is	delivered to any thread	in the
       current process,	the callback specified by ->handler is scheduled to be
       called in the thread that the struct iv_signal  object  was  registered
       in, with	->cookie as its	sole argument.

       If  the	same signal arrives again while	the callback function is still
       running,	the callback function is guaranteed to be called  again	 after
       it returns.

       It  is  permitted to register multiple struct iv_signal objects for the
       same signal number.  If all such	objects	are  registered	 with  IV_SIG-
       NAL_FLAG_EXCLUSIVE  in  ->flags unset, then all objects will have their
       callback	functions called upon arrival of the signal, in	no  guaranteed

       Invoking	 callback functions stops at the first struct iv_signal	object
       with IV_SIGNAL_FLAG_EXCLUSIVE in	->flags	set, so	that  if  all  objects
       have  IV_SIGNAL_FLAG_EXCLUSIVE  set, only one callback function will be

       To deinitialize a struct	iv_signal  object,  call  iv_signal_unregister
       from  the  same	thread that iv_signal_register was called from on that

       It is permitted to unregister a struct iv_signal	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.

       It is guaranteed	that signals delivered to child	 processes  that  were
       created	by  fork(2)  but  that	have not yet called execve(2) will not
       cause iv_signal callbacks to be invoked in the parent process.

       Internally, iv_signal is	implemented using iv_event_raw(3).

       ivykis(3), iv_event_raw(3), sigaction(2)

ivykis				  2010-09-03			  iv_signal(3)


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

home | help