128 bool consumed =
false;
197 clink_tlink_init(link);
211 clink_tlink_fini(link);
278 clink_tlist_del(link);
M0_INTERNAL void m0_enter_awkward(void)
M0_INTERNAL void m0_chan_wait(struct m0_clink *link)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL void m0_chan_broadcast_lock(struct m0_chan *chan)
M0_INTERNAL bool m0_chan_is_locked(const struct m0_chan *ch)
M0_TL_DEFINE(clink, static, struct m0_clink)
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)
static void chan_signal_nr(struct m0_chan *chan, uint32_t nr)
M0_INTERNAL void m0_clink_del_lock(struct m0_clink *link)
struct m0_addb2_hist ca_queue_hist
M0_INTERNAL bool m0_semaphore_trydown(struct m0_semaphore *semaphore)
M0_INTERNAL bool m0_chan_has_waiters(struct m0_chan *chan)
static struct m0_sm_group * grp
M0_INTERNAL bool m0_semaphore_timeddown(struct m0_semaphore *semaphore, const m0_time_t abs_timeout)
static void clink_signal(struct m0_clink *clink)
struct m0_semaphore cl_wait
M0_INTERNAL bool m0_clink_is_armed(const struct m0_clink *link)
void m0_addb2_hist_mod(struct m0_addb2_hist *hist, int64_t val)
M0_INTERNAL void m0_chan_lock(struct m0_chan *ch)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
#define M0_ASSERT_EX(cond)
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)
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
struct m0_clink * cl_group
static bool m0_chan_invariant(struct m0_chan *chan)
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 int m0_semaphore_init(struct m0_semaphore *semaphore, unsigned value)
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)
M0_INTERNAL bool m0_list_link_is_in(const struct m0_list_link *link)
struct m0_tlink cl_linkage
struct m0_list_link * ll_next
void m0_clink_add_lock(struct m0_chan *chan, struct m0_clink *link)
static void clink_init(struct m0_clink *link, struct m0_clink *group, m0_chan_cb_t cb)
static struct m0_chan chan[RDWR_REQUEST_MAX]
struct m0_list_link t_link
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_semaphore_fini(struct m0_semaphore *semaphore)
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
struct m0_addb2_hist ca_wait_hist
M0_INTERNAL uint64_t m0_ptr_wrap(const void *p)
M0_INTERNAL void m0_chan_fini(struct m0_chan *chan)
static bool clink_is_head(const struct m0_clink *clink)
M0_INTERNAL void m0_exit_awkward(void)
struct m0_addb2_hist ca_cb_hist
M0_INTERNAL void m0_semaphore_down(struct m0_semaphore *semaphore)
M0_INTERNAL void m0_semaphore_up(struct m0_semaphore *semaphore)
M0_TL_DESCR_DEFINE(clink, "chan clinks", static, struct m0_clink, cl_linkage, cl_magic, M0_LIB_CHAN_MAGIC, M0_LIB_CHAN_HEAD_MAGIC)
static int scan(struct scanner *s)
#define M0_ADDB2_HIST(id, hist, datum,...)
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
#define m0_tl_forall(name, var, head,...)