ao_signal.h
Signals

Include

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

Types

ao_signal_t

typedef struct ao_signal_t ao_signal_t;

Represents a signal.

ao_signal_wait_t

typedef struct ao_signal_wait_t ao_signal_wait_t;

Represents the waiting for a signal.

Structs

ao_signal_t

struct ao_signal_t
{
    ao_list_t wait;
};
wait The list of waitings.

ao_signal_wait_t

struct ao_signal_wait_t
{
    ao_async_t     async;
    bool volatile  result;
    ao_signal_t *  signal;
    ao_list_node_t signal_wait_node;
};
async The asynchronous event.
result The result.
signal The signal.
signal_wait_node The node for the signal’s list of waitings.

Functions

ao_signal_notify

void ao_signal_notify(ao_signal_t * s);

Notifies the first waiting for a signal.

ao_signal_notify_all

void ao_signal_notify_all(ao_signal_t * s);

Notifies all waitings for a signal.

ao_signal_wait

ao_signal_wait_from

bool ao_signal_wait     (ao_signal_t * s, ao_time_t timeout);
bool ao_signal_wait_from(ao_signal_t * s, ao_time_t timeout, ao_time_t beginning);

Waits for a signal in a blocking fashion with a timeout and an optional beginning.

ao_signal_wait_forever

bool ao_signal_wait_forever(ao_signal_t * s);

Waits for a signal indefinitely in a blocking fashion.

ao_signal_wait_begin

ao_signal_wait_end

void ao_signal_wait_begin(ao_signal_wait_t * w);
void ao_signal_wait_end  (ao_signal_wait_t * w);

Begins or ends, respectively, a waiting for a signal.