Commit 0d993c02 authored by Mark Andrews's avatar Mark Andrews
Browse files

1250. [bug] When processing events (non-threaded) only allow

                        the task one chance to use to use its quantum.
parent ff30cdeb
1250. [bug] When processing events (non-threaded) only allow
the task one chance to use to use its quantum.
1249. [func] named-checkzone will now check if nameservers that 1249. [func] named-checkzone will now check if nameservers that
appear to be IP addresses. Available modes "fail", appear to be IP addresses. Available modes "fail",
"warn" (default) and "ignore" the results of the "warn" (default) and "ignore" the results of the
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: types.h,v 1.32 2001/01/09 21:57:42 bwelling Exp $ */ /* $Id: types.h,v 1.33 2002/07/19 03:39:44 marka Exp $ */
#ifndef ISC_TYPES_H #ifndef ISC_TYPES_H
#define ISC_TYPES_H 1 #define ISC_TYPES_H 1
...@@ -78,6 +78,7 @@ typedef struct isc_socketevent isc_socketevent_t; ...@@ -78,6 +78,7 @@ typedef struct isc_socketevent isc_socketevent_t;
typedef struct isc_socketmgr isc_socketmgr_t; typedef struct isc_socketmgr isc_socketmgr_t;
typedef struct isc_symtab isc_symtab_t; typedef struct isc_symtab isc_symtab_t;
typedef struct isc_task isc_task_t; typedef struct isc_task isc_task_t;
typedef ISC_LIST(isc_task_t) isc_tasklist_t;
typedef struct isc_taskmgr isc_taskmgr_t; typedef struct isc_taskmgr isc_taskmgr_t;
typedef struct isc_textregion isc_textregion_t; typedef struct isc_textregion isc_textregion_t;
typedef struct isc_time isc_time_t; typedef struct isc_time isc_time_t;
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: task.c,v 1.87 2002/03/29 01:25:04 marka Exp $ */ /* $Id: task.c,v 1.88 2002/07/19 03:39:43 marka Exp $ */
/* /*
* Principal Author: Bob Halley * Principal Author: Bob Halley
...@@ -111,7 +111,7 @@ struct isc_taskmgr { ...@@ -111,7 +111,7 @@ struct isc_taskmgr {
/* Locked by task manager lock. */ /* Locked by task manager lock. */
unsigned int default_quantum; unsigned int default_quantum;
LIST(isc_task_t) tasks; LIST(isc_task_t) tasks;
LIST(isc_task_t) ready_tasks; isc_tasklist_t ready_tasks;
#ifdef ISC_PLATFORM_USETHREADS #ifdef ISC_PLATFORM_USETHREADS
isc_condition_t work_available; isc_condition_t work_available;
isc_condition_t exclusive_granted; isc_condition_t exclusive_granted;
...@@ -726,6 +726,7 @@ dispatch(isc_taskmgr_t *manager) { ...@@ -726,6 +726,7 @@ dispatch(isc_taskmgr_t *manager) {
isc_task_t *task; isc_task_t *task;
#ifndef ISC_PLATFORM_USETHREADS #ifndef ISC_PLATFORM_USETHREADS
unsigned int total_dispatch_count = 0; unsigned int total_dispatch_count = 0;
isc_tasklist_t ready_tasks;
#endif /* ISC_PLATFORM_USETHREADS */ #endif /* ISC_PLATFORM_USETHREADS */
REQUIRE(VALID_MANAGER(manager)); REQUIRE(VALID_MANAGER(manager));
...@@ -780,6 +781,9 @@ dispatch(isc_taskmgr_t *manager) { ...@@ -780,6 +781,9 @@ dispatch(isc_taskmgr_t *manager) {
* unlocks. The while expression is always protected by the lock. * unlocks. The while expression is always protected by the lock.
*/ */
#ifndef ISC_PLATFORM_USETHREADS
ISC_LIST_INIT(ready_tasks);
#endif
LOCK(&manager->lock); LOCK(&manager->lock);
while (!FINISHED(manager)) { while (!FINISHED(manager)) {
#ifdef ISC_PLATFORM_USETHREADS #ifdef ISC_PLATFORM_USETHREADS
...@@ -965,11 +969,18 @@ dispatch(isc_taskmgr_t *manager) { ...@@ -965,11 +969,18 @@ dispatch(isc_taskmgr_t *manager) {
* were usually nonempty, the 'optimization' * were usually nonempty, the 'optimization'
* might even hurt rather than help. * might even hurt rather than help.
*/ */
#ifdef ISC_PLATFORM_USETHREADS
ENQUEUE(manager->ready_tasks, task, ENQUEUE(manager->ready_tasks, task,
ready_link); ready_link);
#else
ENQUEUE(ready_tasks, task, ready_link);
#endif
} }
} }
} }
#ifndef ISC_PLATFORM_USETHREADS
ISC_LIST_APPENDLIST(manager->ready_tasks, ready_tasks, ready_link);
#endif
UNLOCK(&manager->lock); UNLOCK(&manager->lock);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment