Barrelfish
|
Waitset interface to channel implementations. More...
Functions | |
void | waitset_chanstate_init (struct waitset_chanstate *chan, enum ws_chantype chantype) |
Initialise per-channel waitset state. More... | |
void | waitset_chanstate_destroy (struct waitset_chanstate *chan) |
Destroy previously-initialised per-channel waitset state. More... | |
errval_t | waitset_chan_trigger (struct waitset_chanstate *chan) |
Trigger an event callback on a channel. More... | |
errval_t | waitset_chan_trigger_closure (struct waitset *ws, struct waitset_chanstate *chan, struct event_closure closure) |
Trigger a specific event callback on an unregistered channel. More... | |
errval_t | waitset_chan_deregister (struct waitset_chanstate *chan) |
Cancel a previous callback registration. More... | |
errval_t | waitset_chan_register (struct waitset *ws, struct waitset_chanstate *chan, struct event_closure closure) |
Register a closure to be called when a channel is triggered. More... | |
errval_t | waitset_chan_register_polled (struct waitset *ws, struct waitset_chanstate *chan, struct event_closure closure) |
Register a closure on a channel, and mark the channel as polled. More... | |
void | waitset_chan_migrate (struct waitset_chanstate *chan, struct waitset *new_ws) |
Migrate callback registrations to a new waitset. More... | |
Waitset interface to channel implementations.
errval_t waitset_chan_deregister | ( | struct waitset_chanstate * | chan | ) |
Cancel a previous callback registration.
Remove the registration for a callback on the given channel. This function must only be called when enabled.
chan | Waitset's per-channel state |
void waitset_chan_migrate | ( | struct waitset_chanstate * | chan, |
struct waitset * | new_ws | ||
) |
Migrate callback registrations to a new waitset.
chan | Old waitset's per-channel state to migrate |
new_ws | New waitset to migrate to |
errval_t waitset_chan_register | ( | struct waitset * | ws, |
struct waitset_chanstate * | chan, | ||
struct event_closure | closure | ||
) |
Register a closure to be called when a channel is triggered.
In the Future, call the closure on a thread associated with the waitset when the channel is triggered. Only one closure may be registered per channel state at any one time. This function must only be called when enabled.
ws | Waitset |
chan | Waitset's per-channel state |
closure | Event handler |
errval_t waitset_chan_register_polled | ( | struct waitset * | ws, |
struct waitset_chanstate * | chan, | ||
struct event_closure | closure | ||
) |
Register a closure on a channel, and mark the channel as polled.
In the Future, call the closure on a thread associated with the waitset when the channel is triggered. Only one closure may be registered per channel state at any one time. Additionally, mark the channel as polled. This function must only be called when enabled. It is equivalent to calling waitset_chan_register() followed by waitset_chan_start_polling().
ws | Waitset |
chan | Waitset's per-channel state |
closure | Event handler |
errval_t waitset_chan_trigger | ( | struct waitset_chanstate * | chan | ) |
Trigger an event callback on a channel.
Marks the given channel as having a pending event, causing some future call to get_next_event() to return the registered closure. This function must only be called when enabled.
chan | Waitset's per-channel state |
disp | Current dispatcher pointer |
errval_t waitset_chan_trigger_closure | ( | struct waitset * | ws, |
struct waitset_chanstate * | chan, | ||
struct event_closure | closure | ||
) |
Trigger a specific event callback on an unregistered channel.
This function is equivalent to waitset_chan_register() followed by waitset_chan_trigger(), but avoids unneccessary queue manipulation. This function must only be called when enabled.
ws | Waitset |
chan | Waitset's per-channel state |
closure | Event handler |
void waitset_chanstate_destroy | ( | struct waitset_chanstate * | chan | ) |
Destroy previously-initialised per-channel waitset state.
chan | Channel state |
void waitset_chanstate_init | ( | struct waitset_chanstate * | chan, |
enum ws_chantype | chantype | ||
) |
Initialise per-channel waitset state.
"Private" functions that are called only by the channel implementations
chan | Channel state |
chantype | Channel type |