Motr  M0
chan.c File Reference
#include "lib/thread.h"
#include "lib/errno.h"
#include "lib/chan.h"
#include "lib/assert.h"
#include "addb2/addb2.h"
#include "addb2/counter.h"
#include "motr/magic.h"
#include "lib/arith.h"
Include dependency graph for chan.c:

Go to the source code of this file.

Functions

 M0_TL_DESCR_DEFINE (clink, "chan clinks", static, struct m0_clink, cl_linkage, cl_magic, M0_LIB_CHAN_MAGIC, M0_LIB_CHAN_HEAD_MAGIC)
 
 M0_TL_DEFINE (clink, static, struct m0_clink)
 
static bool clink_is_head (const struct m0_clink *clink)
 
M0_INTERNAL void m0_chan_lock (struct m0_chan *ch)
 
M0_INTERNAL void m0_chan_unlock (struct m0_chan *ch)
 
M0_INTERNAL bool m0_chan_is_locked (const struct m0_chan *ch)
 
static bool m0_chan_invariant (struct m0_chan *chan)
 
M0_INTERNAL void m0_chan_init (struct m0_chan *chan, struct m0_mutex *ch_guard)
 
M0_INTERNAL void m0_chan_fini (struct m0_chan *chan)
 
M0_INTERNAL void m0_chan_fini_lock (struct m0_chan *chan)
 
static void clink_signal (struct m0_clink *clink)
 
static void chan_signal_nr (struct m0_chan *chan, uint32_t nr)
 
M0_INTERNAL void m0_chan_signal (struct m0_chan *chan)
 
M0_INTERNAL void m0_chan_signal_lock (struct m0_chan *chan)
 
M0_INTERNAL void m0_chan_broadcast (struct m0_chan *chan)
 
M0_INTERNAL void m0_chan_broadcast_lock (struct m0_chan *chan)
 
M0_INTERNAL bool m0_chan_has_waiters (struct m0_chan *chan)
 
static void clink_init (struct m0_clink *link, struct m0_clink *group, m0_chan_cb_t cb)
 
M0_INTERNAL void m0_clink_init (struct m0_clink *link, m0_chan_cb_t cb)
 
M0_INTERNAL void m0_clink_fini (struct m0_clink *link)
 
M0_INTERNAL void m0_clink_attach (struct m0_clink *link, struct m0_clink *group, m0_chan_cb_t cb)
 
M0_INTERNAL void m0_clink_add (struct m0_chan *chan, struct m0_clink *link)
 
void m0_clink_add_lock (struct m0_chan *chan, struct m0_clink *link)
 
M0_INTERNAL void m0_clink_del (struct m0_clink *link)
 
M0_INTERNAL void m0_clink_del_lock (struct m0_clink *link)
 
M0_INTERNAL bool m0_clink_is_armed (const struct m0_clink *link)
 
M0_INTERNAL void m0_clink_cleanup (struct m0_clink *link)
 
M0_INTERNAL void m0_clink_cleanup_locked (struct m0_clink *link)
 
M0_INTERNAL void m0_clink_signal (struct m0_clink *clink)
 
M0_INTERNAL bool m0_chan_trywait (struct m0_clink *link)
 
M0_INTERNAL void m0_chan_wait (struct m0_clink *link)
 
M0_INTERNAL bool m0_chan_timedwait (struct m0_clink *link, const m0_time_t abs_timeout)