diff options
| author | 2004-09-28 17:14:01 +0000 | |
|---|---|---|
| committer | 2004-09-28 17:14:01 +0000 | |
| commit | b2d2683558b03d82a0e27c5ba2cc4a8587a76bb9 (patch) | |
| tree | 46d872038a60738a8adb1c055a5cff3127d790b1 /usr.sbin/bind/lib/isc/task.c | |
| parent | Use ETHER_MIN_LEN/ETHER_MAX_DIX_LEN (diff) | |
| download | wireguard-openbsd-b2d2683558b03d82a0e27c5ba2cc4a8587a76bb9.tar.xz wireguard-openbsd-b2d2683558b03d82a0e27c5ba2cc4a8587a76bb9.zip | |
resolve conflicts
Diffstat (limited to 'usr.sbin/bind/lib/isc/task.c')
| -rw-r--r-- | usr.sbin/bind/lib/isc/task.c | 62 |
1 files changed, 38 insertions, 24 deletions
diff --git a/usr.sbin/bind/lib/isc/task.c b/usr.sbin/bind/lib/isc/task.c index 30eeeda2d8f..ff0f72bcc07 100644 --- a/usr.sbin/bind/lib/isc/task.c +++ b/usr.sbin/bind/lib/isc/task.c @@ -1,21 +1,21 @@ /* - * Copyright (C) 1998-2002 Internet Software Consortium. + * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * - * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM - * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL - * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. */ -/* $ISC: task.c,v 1.85.2.3 2002/08/06 02:20:39 marka Exp $ */ +/* $ISC: task.c,v 1.85.2.3.8.4 2004/03/08 21:06:29 marka Exp $ */ /* * Principal Author: Bob Halley @@ -82,6 +82,7 @@ struct isc_task { isc_eventlist_t on_shutdown; unsigned int quantum; unsigned int flags; + isc_stdtime_t now; #ifdef ISC_TASK_NAMES char name[16]; void * tag; @@ -164,7 +165,7 @@ task_finished(isc_task_t *task) { DESTROYLOCK(&task->lock); task->magic = 0; - isc_mem_put(manager->mctx, task, sizeof *task); + isc_mem_put(manager->mctx, task, sizeof(*task)); } isc_result_t @@ -177,13 +178,13 @@ isc_task_create(isc_taskmgr_t *manager, unsigned int quantum, REQUIRE(VALID_MANAGER(manager)); REQUIRE(taskp != NULL && *taskp == NULL); - task = isc_mem_get(manager->mctx, sizeof *task); + task = isc_mem_get(manager->mctx, sizeof(*task)); if (task == NULL) return (ISC_R_NOMEMORY); XTRACE("isc_task_create"); task->manager = manager; if (isc_mutex_init(&task->lock) != ISC_R_SUCCESS) { - isc_mem_put(manager->mctx, task, sizeof *task); + isc_mem_put(manager->mctx, task, sizeof(*task)); UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_mutex_init() %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, @@ -196,8 +197,9 @@ isc_task_create(isc_taskmgr_t *manager, unsigned int quantum, INIT_LIST(task->on_shutdown); task->quantum = quantum; task->flags = 0; + task->now = 0; #ifdef ISC_TASK_NAMES - memset(task->name, 0, sizeof task->name); + memset(task->name, 0, sizeof(task->name)); task->tag = NULL; #endif INIT_LINK(task, link); @@ -215,7 +217,7 @@ isc_task_create(isc_taskmgr_t *manager, unsigned int quantum, if (exiting) { DESTROYLOCK(&task->lock); - isc_mem_put(manager->mctx, task, sizeof *task); + isc_mem_put(manager->mctx, task, sizeof(*task)); return (ISC_R_SHUTTINGDOWN); } @@ -636,7 +638,7 @@ isc_task_onshutdown(isc_task_t *task, isc_taskaction_t action, const void *arg) ISC_TASKEVENT_SHUTDOWN, action, arg, - sizeof *event); + sizeof(*event)); if (event == NULL) return (ISC_R_NOMEMORY); @@ -649,7 +651,7 @@ isc_task_onshutdown(isc_task_t *task, isc_taskaction_t action, const void *arg) UNLOCK(&task->lock); if (disallowed) - isc_mem_put(task->manager->mctx, event, sizeof *event); + isc_mem_put(task->manager->mctx, event, sizeof(*event)); return (result); } @@ -717,6 +719,17 @@ isc_task_gettag(isc_task_t *task) { return (task->tag); } +void +isc_task_getcurrenttime(isc_task_t *task, isc_stdtime_t *t) { + REQUIRE(VALID_TASK(task)); + REQUIRE(t != NULL); + + LOCK(&task->lock); + + *t = task->now; + + UNLOCK(&task->lock); +} /*** *** Task Manager. @@ -838,6 +851,7 @@ dispatch(isc_taskmgr_t *manager) { task->state = task_state_running; XTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_RUNNING, "running")); + isc_stdtime_get(&task->now); do { if (!EMPTY(task->events)) { event = HEAD(task->events); @@ -1012,12 +1026,12 @@ manager_free(isc_taskmgr_t *manager) { (void)isc_condition_destroy(&manager->exclusive_granted); (void)isc_condition_destroy(&manager->work_available); isc_mem_put(manager->mctx, manager->threads, - manager->workers * sizeof (isc_thread_t)); + manager->workers * sizeof(isc_thread_t)); #endif /* ISC_PLATFORM_USETHREADS */ DESTROYLOCK(&manager->lock); manager->magic = 0; mctx = manager->mctx; - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); isc_mem_detach(&mctx); } @@ -1048,7 +1062,7 @@ isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers, } #endif /* ISC_PLATFORM_USETHREADS */ - manager = isc_mem_get(mctx, sizeof *manager); + manager = isc_mem_get(mctx, sizeof(*manager)); if (manager == NULL) return (ISC_R_NOMEMORY); manager->magic = TASK_MANAGER_MAGIC; @@ -1063,7 +1077,7 @@ isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers, goto cleanup_mgr; } #ifdef ISC_PLATFORM_USETHREADS - manager->threads = isc_mem_get(mctx, workers * sizeof (isc_thread_t)); + manager->threads = isc_mem_get(mctx, workers * sizeof(isc_thread_t)); if (manager->threads == NULL) { result = ISC_R_NOMEMORY; goto cleanup_lock; @@ -1118,7 +1132,7 @@ isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers, } isc_thread_setconcurrency(workers); #else /* ISC_PLATFORM_USETHREADS */ - manager->refs = 0; + manager->refs = 1; taskmgr = manager; #endif /* ISC_PLATFORM_USETHREADS */ @@ -1130,12 +1144,12 @@ isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers, cleanup_workavailable: (void)isc_condition_destroy(&manager->work_available); cleanup_threads: - isc_mem_put(mctx, manager->threads, workers * sizeof (isc_thread_t)); + isc_mem_put(mctx, manager->threads, workers * sizeof(isc_thread_t)); cleanup_lock: DESTROYLOCK(&manager->lock); #endif cleanup_mgr: - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); return (result); } |
