static void *thread(void *unused) { struct ev_loop *loop = ev_loop_new(0); struct upump_mgr *upump_mgr = upump_ev_mgr_alloc(loop, UPUMP_POOL, UPUMP_BLOCKER_POOL); assert(upump_mgr != NULL); struct upipe *upipe; upipe = upipe_void_alloc(&uprobe_test_mgr, uprobe_use(uprobe)); assert(upump_mgr_get_opaque(upump_mgr, struct upipe *) == NULL); uprobe_test_free(upipe); uprobe_pthread_upump_mgr_set(uprobe, upump_mgr); upipe = upipe_void_alloc(&uprobe_test_mgr, uprobe_use(uprobe)); assert(upump_mgr_get_opaque(upump_mgr, struct upipe *) == upipe); uprobe_test_free(upipe); upump_mgr_set_opaque(upump_mgr, NULL); uprobe_throw(uprobe, NULL, UPROBE_FREEZE_UPUMP_MGR); upipe = upipe_void_alloc(&uprobe_test_mgr, uprobe_use(uprobe)); assert(upump_mgr_get_opaque(upump_mgr, struct upipe *) == NULL); uprobe_test_free(upipe); uprobe_throw(uprobe, NULL, UPROBE_THAW_UPUMP_MGR); upipe = upipe_void_alloc(&uprobe_test_mgr, uprobe_use(uprobe)); assert(upump_mgr_get_opaque(upump_mgr, struct upipe *) == upipe); uprobe_test_free(upipe); upump_mgr_release(upump_mgr); ev_loop_destroy(loop); return NULL; }
int main(int argc, char **argv) { struct ev_loop *loop = ev_default_loop(0); upump_mgr = upump_ev_mgr_alloc(loop); assert(upump_mgr != NULL); struct uprobe *uprobe = uprobe_upump_mgr_alloc(NULL, upump_mgr); assert(uprobe != NULL); struct upipe *upipe = uprobe_test_alloc(&uprobe_test_mgr, uprobe); uprobe_test_free(upipe); uprobe_upump_mgr_free(uprobe); upump_mgr_release(upump_mgr); return 0; }