G_EVENT(9)

HOME || NAME SYNOPSIS DESCRIPTION RETURN VALUES ERRORS EXAMPLES SEE ALSO AUTHORS
NAME
     g_post_event, g_waitfor_event, g_cancel_event -- GEOM events management
SYNOPSIS
     #include <geom/geom.h>

     int
     g_post_event(g_event_t *func, void *arg, int flag, ...);

     int
     g_waitfor_event(g_event_t *func, void *arg, int flag, ...);

     void
     g_cancel_event(void *ref);
DESCRIPTION
     The GEOM framework has its own event queue to inform classes about impor-
     tant events.  The event queue can be also used by GEOM classes them-
     selves, for example to work around some restrictions in the I/O path,
     where sleeping, heavy weight tasks, etc. are not permitted.

     The g_post_event() function tells the GEOM framework to call function
     func with argument arg from the event queue.  The flag argument is passed
     to malloc(9) for memory allocations inside of g_post_event().  The only
     allowed flags are M_WAITOK and M_NOWAIT.  The rest of the arguments are
     used as references to identify the event.	An event can be canceled by
     using any of the given references as an argument to g_cancel_event().
     The list of references has to end with a NULL value.

     The g_waitfor_event() function is a blocking version of the
     g_post_event() function.  It waits until the event is finished or can-
     celed and then returns.

     The g_cancel_event() function cancels all event(s) identified by ref.
     Cancellation is equivalent to calling the requested function with
     requested arguments and argument flag set to EV_CANCEL.

RESTRICTIONS/CONDITIONS
     g_post_event():

	   The argument flag has to be M_WAITOK or M_NOWAIT.

	   The list of references has to end with a NULL value.

     g_waitfor_event():

	   The argument flag has to be M_WAITOK or M_NOWAIT.

	   The list of references has to end with a NULL value.

	   The g_waitfor_event() function cannot be called from an event,
	   since doing so would result in a deadlock.
RETURN VALUES
     The g_post_event() and g_waitfor_event() functions return 0 if success-
     ful; otherwise an error code is returned.
ERRORS
     Possible errors for the g_post_event() function:

     [ENOMEM]		The flag argument was set to M_NOWAIT and there was
			insufficient memory.

     Possible errors for the g_waitfor_event() function:

     [EAGAIN]		The event was canceled.

     [ENOMEM]		The flag argument was set to M_NOWAIT and there was
			insufficient memory.
EXAMPLES
     Example of a function called from the event queue.

	   void
	   example_event(void *arg, int flag)
	   {

		   if (flag == EV_CANCEL) {
			   printf("Event with argument %p canceled.\n", arg);
			   return;
		   }

		   printf("Event with argument %p called.\n", arg);
	   }
SEE ALSO
     geom(4), DECLARE_GEOM_CLASS(9), g_access(9), g_attach(9), g_bio(9),
     g_consumer(9), g_data(9), g_geom(9), g_provider(9),
     g_provider_by_name(9), g_wither_geom(9)
AUTHORS
     This manual page was written by Pawel Jakub Dawidek <pjd@FreeBSD.org>.