From: Marek VavruĊĦa Date: Mon, 8 Jun 2015 00:03:58 +0000 (+0200) Subject: daemon: allocate worker from pool, cleanup X-Git-Tag: v1.0.0-beta1~120^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cfbc90428abfa0bf1c66e9bbfdc74f9cd0134277;p=thirdparty%2Fknot-resolver.git daemon: allocate worker from pool, cleanup --- diff --git a/daemon/main.c b/daemon/main.c index 56de7310c..83e82429f 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -147,13 +147,16 @@ int main(int argc, char **argv) engine_lualib(&engine, "event", lib_event); /* Create main worker. */ - struct worker_ctx worker = { - .engine = &engine, - .loop = loop, - .mm = NULL, - }; - loop->data = &worker; - worker_reserve(&worker, MP_FREELIST_SIZE); + struct worker_ctx *worker = mm_alloc(&pool, sizeof(*worker)); + if(!worker) { + fprintf(stderr, "[system] not enough memory\n"); + return EXIT_FAILURE; + } + memset(worker, 0, sizeof(*worker)); + worker->engine = &engine, + worker->loop = loop; + loop->data = worker; + worker_reserve(worker, MP_FREELIST_SIZE); /* Bind to sockets. */ if (addr != NULL) { @@ -186,7 +189,8 @@ int main(int argc, char **argv) /* Cleanup. */ fprintf(stderr, "\n[system] quitting\n"); engine_deinit(&engine); - worker_reclaim(&worker); + worker_reclaim(worker); + mp_delete(pool.ctx); if (ret != 0) { ret = EXIT_FAILURE;