1/** 2 * \file 3 * \brief Waitset interface to channel implementations 4 */ 5 6/* 7 * Copyright (c) 2009, 2011, 2012, ETH Zurich. 8 * All rights reserved. 9 * 10 * This file is distributed under the terms in the attached LICENSE file. 11 * If you do not find this file, copies can be found by writing to: 12 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group. 13 */ 14 15#ifndef BARRELFISH_WAITSET_CHAN_H 16#define BARRELFISH_WAITSET_CHAN_H 17 18#include <sys/cdefs.h> 19#include <barrelfish/waitset.h> 20 21__BEGIN_DECLS 22 23static inline bool waitset_chan_is_registered(struct waitset_chanstate *chan) 24{ 25 return chan->waitset != NULL && 26 (chan->state == CHAN_IDLE || chan->state == CHAN_POLLED); 27} 28 29void waitset_chanstate_init(struct waitset_chanstate *chan, 30 enum ws_chantype chantype); 31void waitset_chanstate_destroy(struct waitset_chanstate *chan); 32errval_t waitset_chan_trigger(struct waitset_chanstate *chan); 33errval_t waitset_chan_trigger_closure(struct waitset *ws, 34 struct waitset_chanstate *chan, 35 struct event_closure closure); 36errval_t waitset_chan_deregister(struct waitset_chanstate *chan); 37errval_t waitset_chan_register(struct waitset *ws, struct waitset_chanstate *chan, 38 struct event_closure closure); 39errval_t waitset_chan_register_polled(struct waitset *ws, 40 struct waitset_chanstate *chan, 41 struct event_closure closure); 42void waitset_chan_migrate(struct waitset_chanstate *chan, 43 struct waitset *new_ws); 44 45__END_DECLS 46 47#endif // BARRELFISH_WAITSET_CHAN_H 48