25 #ifndef __MOTR_LIB_CHAN_H__ 26 #define __MOTR_LIB_CHAN_H__
M0_INTERNAL void m0_chan_wait(struct m0_clink *link)
M0_INTERNAL void m0_chan_broadcast_lock(struct m0_chan *chan)
M0_INTERNAL bool m0_chan_is_locked(const struct m0_chan *ch)
M0_INTERNAL void m0_clink_init(struct m0_clink *link, m0_chan_cb_t cb)
M0_INTERNAL void m0_clink_del(struct m0_clink *link)
M0_INTERNAL void m0_clink_del_lock(struct m0_clink *link)
struct m0_addb2_hist ca_queue_hist
M0_INTERNAL bool m0_chan_has_waiters(struct m0_chan *chan)
struct m0_semaphore cl_wait
M0_INTERNAL bool m0_clink_is_armed(const struct m0_clink *link)
M0_INTERNAL void m0_chan_lock(struct m0_chan *ch)
M0_INTERNAL void m0_chan_signal(struct m0_chan *chan)
struct m0_chan_addb2 * ch_addb2
M0_INTERNAL void m0_clink_attach(struct m0_clink *link, struct m0_clink *group, m0_chan_cb_t cb)
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
struct m0_clink * cl_group
M0_INTERNAL void m0_clink_cleanup_locked(struct m0_clink *link)
M0_INTERNAL bool m0_chan_trywait(struct m0_clink *link)
M0_INTERNAL void m0_clink_signal(struct m0_clink *clink)
M0_INTERNAL void m0_clink_cleanup(struct m0_clink *link)
static struct m0_clink clink[RDWR_REQUEST_MAX]
M0_INTERNAL void m0_chan_unlock(struct m0_chan *ch)
M0_INTERNAL void m0_chan_signal_lock(struct m0_chan *chan)
bool(* m0_chan_cb_t)(struct m0_clink *link)
struct m0_tlink cl_linkage
void m0_clink_add_lock(struct m0_chan *chan, struct m0_clink *link)
static struct m0_chan chan[RDWR_REQUEST_MAX]
M0_INTERNAL void m0_clink_add(struct m0_chan *chan, struct m0_clink *link)
M0_INTERNAL bool m0_chan_timedwait(struct m0_clink *link, const m0_time_t abs_timeout)
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
struct m0_addb2_hist ca_wait_hist
M0_INTERNAL void m0_chan_fini(struct m0_chan *chan)
struct m0_addb2_hist ca_cb_hist
M0_INTERNAL void m0_chan_fini_lock(struct m0_chan *chan)
M0_INTERNAL void m0_chan_broadcast(struct m0_chan *chan)
struct m0_mutex * ch_guard