ATF_TC_BODY(get_tasks, tc) { isc_result_t result; isc_taskpool_t *pool = NULL; isc_task_t *task1 = NULL, *task2 = NULL, *task3 = NULL; UNUSED(tc); result = isc_test_begin(NULL, ISC_TRUE); ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); result = isc_taskpool_create(taskmgr, mctx, 2, 2, &pool); ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); ATF_REQUIRE_EQ(isc_taskpool_size(pool), 2); /* two tasks in pool; make sure we can access them more than twice */ isc_taskpool_gettask(pool, &task1); ATF_REQUIRE(ISCAPI_TASK_VALID(task1)); isc_taskpool_gettask(pool, &task2); ATF_REQUIRE(ISCAPI_TASK_VALID(task2)); isc_taskpool_gettask(pool, &task3); ATF_REQUIRE(ISCAPI_TASK_VALID(task3)); isc_task_destroy(&task1); isc_task_destroy(&task2); isc_task_destroy(&task3); isc_taskpool_destroy(&pool); ATF_REQUIRE_EQ(pool, NULL); isc_test_end(); }
unsigned int isc_task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag) { REQUIRE(ISCAPI_TASK_VALID(task)); return (task->methods->purgeevents(task, sender, type, tag)); }
isc_result_t isc_task_onshutdown(isc_task_t *task, isc_taskaction_t action, const void *arg) { REQUIRE(ISCAPI_TASK_VALID(task)); return (task->methods->onshutdown(task, action, arg)); }
/*% * This is necessary for libisc's internal timer implementation. Other * implementation might skip implementing this. */ unsigned int isc_task_purgerange(isc_task_t *task, void *sender, isc_eventtype_t first, isc_eventtype_t last, void *tag) { REQUIRE(ISCAPI_TASK_VALID(task)); return (task->methods->purgerange(task, sender, first, last, tag)); }
unsigned int isc_task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag, isc_eventlist_t *events) { REQUIRE(ISCAPI_TASK_VALID(task)); return (task->methods->unsend(task, sender, type, tag, events)); }
void isc_task_detach(isc_task_t **taskp) { REQUIRE(taskp != NULL && ISCAPI_TASK_VALID(*taskp)); (*taskp)->methods->detach(taskp); ENSURE(*taskp == NULL); }
void isc_task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) { REQUIRE(taskp != NULL && ISCAPI_TASK_VALID(*taskp)); REQUIRE(eventp != NULL && *eventp != NULL); (*taskp)->methods->sendanddetach(taskp, eventp); ENSURE(*taskp == NULL && *eventp == NULL); }
void isc_task_send(isc_task_t *task, isc_event_t **eventp) { REQUIRE(ISCAPI_TASK_VALID(task)); REQUIRE(eventp != NULL && *eventp != NULL); task->methods->send(task, eventp); ENSURE(*eventp == NULL); }
void isc_task_attach(isc_task_t *source, isc_task_t **targetp) { REQUIRE(ISCAPI_TASK_VALID(source)); REQUIRE(targetp != NULL && *targetp == NULL); source->methods->attach(source, targetp); ENSURE(*targetp == source); }
ATF_TC_BODY(set_privilege, tc) { isc_result_t result; isc_taskpool_t *pool = NULL; isc_task_t *task1 = NULL, *task2 = NULL, *task3 = NULL; UNUSED(tc); result = isc_test_begin(NULL, ISC_TRUE); ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); result = isc_taskpool_create(taskmgr, mctx, 2, 2, &pool); ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); ATF_REQUIRE_EQ(isc_taskpool_size(pool), 2); isc_taskpool_setprivilege(pool, ISC_TRUE); isc_taskpool_gettask(pool, &task1); isc_taskpool_gettask(pool, &task2); isc_taskpool_gettask(pool, &task3); ATF_CHECK(ISCAPI_TASK_VALID(task1)); ATF_CHECK(ISCAPI_TASK_VALID(task2)); ATF_CHECK(ISCAPI_TASK_VALID(task3)); ATF_CHECK(isc_task_privilege(task1)); ATF_CHECK(isc_task_privilege(task2)); ATF_CHECK(isc_task_privilege(task3)); isc_taskpool_setprivilege(pool, ISC_FALSE); ATF_CHECK(!isc_task_privilege(task1)); ATF_CHECK(!isc_task_privilege(task2)); ATF_CHECK(!isc_task_privilege(task3)); isc_task_destroy(&task1); isc_task_destroy(&task2); isc_task_destroy(&task3); isc_taskpool_destroy(&pool); ATF_REQUIRE_EQ(pool, NULL); isc_test_end(); }
isc_boolean_t isc_task_privilege(isc_task_t *task) { REQUIRE(ISCAPI_TASK_VALID(task)); return (task->methods->privilege(task)); }
void isc_taskmgr_setexcltask(isc_taskmgr_t *mgr, isc_task_t *task) { REQUIRE(ISCAPI_TASK_VALID(task)); return (mgr->methods->setexcltask(mgr, task)); }
void isc_task_setprivilege(isc_task_t *task, isc_boolean_t priv) { REQUIRE(ISCAPI_TASK_VALID(task)); task->methods->setprivilege(task, priv); }
void isc_task_endexclusive(isc_task_t *task) { REQUIRE(ISCAPI_TASK_VALID(task)); task->methods->endexclusive(task); }
isc_result_t isc_task_beginexclusive(isc_task_t *task) { REQUIRE(ISCAPI_TASK_VALID(task)); return (task->methods->beginexclusive(task)); }
void isc_task_shutdown(isc_task_t *task) { REQUIRE(ISCAPI_TASK_VALID(task)); task->methods->shutdown(task); }
void isc_task_setname(isc_task_t *task, const char *name, void *tag) { REQUIRE(ISCAPI_TASK_VALID(task)); task->methods->setname(task, name, tag); }