shutdown_test.c revision ca41b452ede6feaa9d8739ec3cae19389a7b0d03
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * Copyright (C) 1998, 1999, 2000 Internet Software Consortium.
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * Permission to use, copy, modify, and distribute this software for any
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * purpose with or without fee is hereby granted, provided that the above
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * copyright notice and this permission notice appear in all copies.
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halleytypedef struct {
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley unsigned int ticks;
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley#define T2_SHUTDOWNDONE (ISC_EVENTCLASS(1024) + 1)
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleystatic unsigned int task_count;
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyt1_shutdown(isc_task_t *task, isc_event_t *event) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley printf("task %s (%p) t1_shutdown\n", info->name, task);
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyt2_shutdown(isc_task_t *task, isc_event_t *event) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley printf("task %s (%p) t2_shutdown\n", info->name, task);
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyshutdown_action(isc_task_t *task, isc_event_t *event) {
2504b0a58600c1156a6b829c816d13c58a069453Bob Halley printf("task %s (%p) shutdown\n", info->name, task);
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley nevent = isc_event_allocate(info->mctx, info, T2_SHUTDOWNOK,
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_app_shutdown() == ISC_R_SUCCESS);
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_task_create(task_manager, mctx, 0, &ti->task) ==
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_task_onshutdown(ti->task, shutdown_action, ti) ==
e3027d397f237ff018174fd17bf377a4a1890c6bBob Halley RUNTIME_CHECK(isc_timer_create(timer_manager, isc_timertype_ticker,
38980568375a6505452550b5677104ab44291b66Bob Halley unsigned int workers;
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_mem_create(0, 0, &mctx2) == ISC_R_SUCCESS);
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_taskmgr_create(mctx, workers, 0, &task_manager) ==
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley RUNTIME_CHECK(isc_timermgr_create(mctx, &timer_manager) ==
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley * Test run-triggered shutdown.
19f08273e2592fa48608ec1ac5e021b4b3489030Bob Halley * Test implicit shutdown.
38980568375a6505452550b5677104ab44291b66Bob Halley RUNTIME_CHECK(isc_task_create(task_manager, mctx, 0, &task) ==
38980568375a6505452550b5677104ab44291b66Bob Halley * Test anti-zombie code.