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

FreeBSD Manual Pages


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

       iv_task_register,  iv_task_unregister,  iv_task_registered  - deal with
       ivykis tasks

       #include	<iv.h>

       struct iv_task {
	       void	       *cookie;
	       void	       (*handler)(void *);

       void IV_TASK_INIT(struct	iv_task	*task);
       void iv_task_register(struct iv_task *task);
       void iv_task_unregister(struct iv_task *task);
       int iv_task_registered(const struct iv_task *task);

       The functions iv_task_register and iv_task_unregister register, respec-
       tively  unregister, a task with the current thread's ivykis event loop.
       iv_task_registered on a task returns true if  that  task	 is  currently
       registered with ivykis.

       A  task is like a timer,	but with an immediate timeout.	When a task is
       registered, unless it is	unregistered again first, the  callback	 func-
       tion  specified	by  ->handler  is guaranteed to	be called once,	in the
       thread that the task was	registered in, some time after control returns
       to  the	ivykis main loop but before ivykis will	sleep for more events,
       with ->cookie as	its first and sole argument.  When this	 happens,  the
       task is transparently unregistered.

       Tasks are mainly	used for scheduling code for execution where it	is not
       appropriate to directly run that	code in	the calling context (for exam-
       ple,  because  the  current context might be run	as a callback function
       where the caller	expects	certain	conditions to remain  invariant	 after
       the callback completes).

       The application is allowed to change the	->cookie and ->handler members
       at any time.

       A given struct iv_task can only be registered in	one thread at a	 time,
       and  a  task  can only be unregistered in the thread that it was	regis-
       tered from.

       There is	no limit on the	number of tasks	registered at once.

       See iv_examples(3) for programming examples.

       ivykis(3), iv_examples(3)

ivykis				  2010-08-15			    iv_task(3)


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

home | help