static void engine_stop_drudgers(engine_type* engine) { #if HAVE_DRUDGERS size_t i = 0; #endif ods_log_assert(engine); ods_log_assert(engine->config); ods_log_debug("[%s] stop drudgers", engine_str); #if HAVE_DRUDGERS /* tell them to exit and wake up sleepyheads */ for (i=0; i < (size_t) engine->config->num_signer_threads; i++) { engine->drudgers[i]->need_to_exit = 1; } worker_notify_all(&engine->signq->q_lock, &engine->signq->q_threshold); /* head count */ for (i=0; i < (size_t) engine->config->num_signer_threads; i++) { ods_log_debug("[%s] join drudger %i", engine_str, i+1); ods_thread_join(engine->drudgers[i]->thread_id); engine->drudgers[i]->engine = NULL; } #endif return; }
static void engine_stop_dnshandler(engine_type* engine) { if (!engine || !engine->dnshandler || !engine->dnshandler->thread_id) { return; } ods_log_debug("[%s] stop dnshandler", engine_str); engine->dnshandler->need_to_exit = 1; dnshandler_signal(engine->dnshandler); ods_log_debug("[%s] join dnshandler", engine_str); ods_thread_join(engine->dnshandler->thread_id); engine->dnshandler->engine = NULL; }
static void engine_stop_xfrhandler(engine_type* engine) { if (!engine || !engine->xfrhandler) { return; } ods_log_debug("[%s] stop xfrhandler", engine_str); engine->xfrhandler->need_to_exit = 1; xfrhandler_signal(engine->xfrhandler); ods_log_debug("[%s] join xfrhandler", engine_str); if (engine->xfrhandler->started) { ods_thread_join(engine->xfrhandler->thread_id); engine->xfrhandler->started = 0; } engine->xfrhandler->engine = NULL; }
void engine_stop_drudgers(engine_type* engine) { int i = 0; ods_log_assert(engine); ods_log_assert(engine->config); ods_log_debug("[%s] stop drudgers", engine_str); /* tell them to exit and wake up sleepyheads */ for (i=0; i < engine->config->num_signer_threads; i++) { engine->drudgers[i]->need_to_exit = 1; } ods_log_debug("[%s] notify drudgers", engine_str); worker_notify_all(&engine->signq->q_lock, &engine->signq->q_threshold); /* head count */ for (i=0; i < engine->config->num_signer_threads; i++) { ods_log_debug("[%s] join drudger %d", engine_str, i+1); ods_thread_join(engine->drudgers[i]->thread_id); engine->drudgers[i]->engine = NULL; } }
static void engine_stop_workers(engine_type* engine) { size_t i = 0; ods_log_assert(engine); ods_log_assert(engine->config); ods_log_debug("[%s] stop workers", engine_str); /* tell them to exit and wake up sleepyheads */ for (i=0; i < (size_t) engine->config->num_worker_threads; i++) { engine->workers[i]->need_to_exit = 1; worker_wakeup(engine->workers[i]); } /* head count */ for (i=0; i < (size_t) engine->config->num_worker_threads; i++) { ods_log_debug("[%s] join worker %i", engine_str, i+1); ods_thread_join(engine->workers[i]->thread_id); engine->workers[i]->engine = NULL; } return; }