void ban_kick_lurker(void) { Lck_AssertHeld(&ban_mtx); ban_generation++; AZ(pthread_cond_signal(&ban_lurker_cond)); }
static void pool_sumstat(const struct dstat *src) { Lck_AssertHeld(&wstat_mtx); #define L0(n) #define L1(n) (VSC_C_main->n += src->n) #define VSC_F(n,t,l,s,f,v,d,e) L##l(n); #include "tbl/vsc_f_main.h" #undef VSC_F #undef L0 #undef L1 }
static void wrk_sumstat(struct worker *w) { Lck_AssertHeld(&wstat_mtx); #define L0(n) #define L1(n) (VSC_C_main->n += w->stats.n) #define VSC_F(n, t, l, f, d, e) L##l(n); #include "tbl/vsc_f_main.h" #undef VSC_F #undef L0 #undef L1 memset(&w->stats, 0, sizeof w->stats); }
static int update_object_when(const struct object *o) { struct objcore *oc; double when; CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC); oc = o->objcore; CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC); Lck_AssertHeld(&exp_mtx); when = o->ttl + HSH_Grace(o->grace); assert(!isnan(when)); if (when == oc->timer_when) return (0); oc->timer_when = when; return (1); }
static struct worker * pool_getidleworker(struct pool *pp) { struct pool_task *pt; struct worker *wrk; CHECK_OBJ_NOTNULL(pp, POOL_MAGIC); Lck_AssertHeld(&pp->mtx); pt = VTAILQ_FIRST(&pp->idle_queue); if (pt == NULL) { if (pp->nthr < cache_param->wthread_max) { pp->dry++; AZ(pthread_cond_signal(&pp->herder_cond)); } return (NULL); } AZ(pt->func); CAST_OBJ_NOTNULL(wrk, pt->priv, WORKER_MAGIC); return (wrk); }