int vmod_event_function(VRT_CTX, struct vmod_priv *vcl_priv, enum vcl_event_e e) { switch (e) { case VCL_EVENT_LOAD: curl_global_init(CURL_GLOBAL_ALL); if (vmod_state.locks.refs == 0) { vmod_state.locks.script = Lck_CreateClass( &vmod_state.locks.vsc_seg, "cfg.script"); AN(vmod_state.locks.script); } vmod_state.locks.refs++; break; case VCL_EVENT_DISCARD: assert(vmod_state.locks.refs > 0); vmod_state.locks.refs--; if (vmod_state.locks.refs == 0) { Lck_DestroyClass(&vmod_state.locks.vsc_seg); } break; default: break; } return 0; }
static void sma_open(const struct stevedore *st) { struct sma_sc *sma_sc; ASSERT_CLI(); if (lck_sma == NULL) lck_sma = Lck_CreateClass("sma"); CAST_OBJ_NOTNULL(sma_sc, st->priv, SMA_SC_MAGIC); Lck_New(&sma_sc->sma_mtx, lck_sma); sma_sc->stats = VSM_Alloc(sizeof *sma_sc->stats, VSC_CLASS, VSC_type_sma, st->ident); memset(sma_sc->stats, 0, sizeof *sma_sc->stats); if (sma_sc->sma_max != SIZE_MAX) sma_sc->stats->g_space = sma_sc->sma_max; }