static void * vbp_wrk_poll_backend(void *priv) { struct vbp_target *vt; THR_SetName("backend poll"); CAST_OBJ_NOTNULL(vt, priv, VBP_TARGET_MAGIC); while (!vt->stop) { AN(vt->req); assert(vt->req_len > 0); if (!vt->disable) { vbp_start_poke(vt); vbp_poke(vt); vbp_has_poked(vt); } if (!vt->stop) VTIM_sleep(vt->probe.interval); } Lck_Delete(&vt->mtx); VTAILQ_REMOVE(&vbp_list, vt, list); VBT_Rel(&vt->tcp_pool); free(vt->req); FREE_OBJ(vt); return (NULL); }
static void vbp_delete(struct vbp_target *vt) { #define DN(x) /**/ VRT_BACKEND_PROBE_HANDLE(); #undef DN VBT_Rel(&vt->tcp_pool); free(vt->req); FREE_OBJ(vt); }