Barrelfish
Functions
waitset_chan.h File Reference

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...
 

Detailed Description

Waitset interface to channel implementations.

Function Documentation

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.

Parameters
chanWaitset's per-channel state
void waitset_chan_migrate ( struct waitset_chanstate chan,
struct waitset new_ws 
)

Migrate callback registrations to a new waitset.

Parameters
chanOld waitset's per-channel state to migrate
new_wsNew 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.

Parameters
wsWaitset
chanWaitset's per-channel state
closureEvent 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().

Parameters
wsWaitset
chanWaitset's per-channel state
closureEvent 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.

Parameters
chanWaitset's per-channel state
dispCurrent 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.

Parameters
wsWaitset
chanWaitset's per-channel state
closureEvent handler
void waitset_chanstate_destroy ( struct waitset_chanstate chan)

Destroy previously-initialised per-channel waitset state.

Parameters
chanChannel 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

Parameters
chanChannel state
chantypeChannel type