ao_mre.h
Manual-reset events

Notes

This module defines manual-reset events.

Include

ao_async.h
ao_list.h
ao_time.h
stdbool.h

Types

ao_mre_t

typedef struct ao_mre_t ao_mre_t;

Represents a manual-reset event.

ao_mre_wait_t

typedef struct ao_mre_wait_t ao_mre_wait_t;

Represents the waiting for a manual-reset event.

Structs

ao_mre_t

struct ao_mre_t
{
    bool      state;
    ao_list_t wait;
};
state The state.
wait The list of waitings.

ao_mre_wait_t

struct ao_mre_wait_t
{
    ao_async_t     async;
    ao_mre_t *     mre;
    ao_list_node_t mre_wait_node;
    bool volatile  result;
};
async The asynchronous event.
mre The manual-reset event.
mre_wait_node The node for the manual-reset event’s list of waitings.
result The result.

Functions

ao_mre_reset

void ao_mre_reset(ao_mre_t * m);

Resets a manual-reset event.

ao_mre_set

void ao_mre_set(ao_mre_t * m);

Sets a manual-reset event.

ao_mre_wait

ao_mre_wait_from

bool ao_mre_wait     (ao_mre_t * m, ao_time_t timeout);
bool ao_mre_wait_from(ao_mre_t * m, ao_time_t timeout, ao_time_t beginning);

Waits for a manual-reset event in a blocking fashion with a timeout and optional beginning.

ao_mre_wait_forever

bool ao_mre_wait_forever(ao_mre_t * m);

Waits for a manual-reset event indefinitely in a blocking fashion.

ao_mre_wait_try

bool ao_mre_wait_try(ao_mre_t * m);

Waits for a manual-reset event in a non-blocking fashion.

ao_mre_wait_begin

ao_mre_wait_end

void ao_mre_wait_begin(ao_mre_wait_t * w);
void ao_mre_wait_end  (ao_mre_wait_t * w);

Begins or ends, respectively, a waiting for a manual-reset event.

External Links