g_post_event(9) GEOM events management

Other Alias

g_waitfor_event, g_cancel_event

SYNOPSIS

In geom/geom.h Ft int Fn g_post_event g_event_t *func void *arg int flag ... Ft int Fn g_waitfor_event g_event_t *func void *arg int flag ... Ft void Fn g_cancel_event void *ref

DESCRIPTION

The GEOM framework has its own event queue to inform classes about important events. The event queue can be also used by GEOM classes themselves, for example to work around some restrictions in the I/O path, where sleeping, heavy weight tasks, etc. are not permitted.

The Fn g_post_event function tells the GEOM framework to call function Fa func with argument Fa arg from the event queue. The Fa flag argument is passed to malloc(9) for memory allocations inside of Fn 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 Fn g_cancel_event . The list of references has to end with a NULL value.

The Fn g_waitfor_event function is a blocking version of the Fn g_post_event function. It waits until the event is finished or canceled and then returns.

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

RESTRICTIONS/CONDITIONS

Fn g_post_event :

The argument
Fa flag has to be M_WAITOK or M_NOWAIT
The list of references has to end with a
NULL value.

Fn g_waitfor_event :

The argument
Fa flag has to be M_WAITOK or M_NOWAIT
The list of references has to end with a
NULL value.
The
Fn g_waitfor_event function cannot be called from an event, since doing so would result in a deadlock.

RETURN VALUES

The Fn g_post_event and Fn g_waitfor_event functions return 0 if successful; otherwise an error code is returned.

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

ERRORS

Possible errors for the Fn g_post_event function:

Bq Er ENOMEM
The Fa flag argument was set to M_NOWAIT and there was insufficient memory.

Possible errors for the Fn g_waitfor_event function:

Bq Er EAGAIN
The event was canceled.
Bq Er ENOMEM
The Fa flag argument was set to M_NOWAIT and there was insufficient memory.

AUTHORS

An -nosplit This manual page was written by An Pawel Jakub Dawidek Aq [email protected] .