mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
1250. [bug] When processing events (non-threaded) only allow
the task one chance to use to use its quantum.
This commit is contained in:
parent
ff30cdeb78
commit
0d993c02ba
3
CHANGES
3
CHANGES
@ -1,3 +1,6 @@
|
|||||||
|
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 @@
|
|||||||
* 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;
|
|||||||
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 @@
|
|||||||
* 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 {
|
|||||||
/* 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) {
|
|||||||
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) {
|
|||||||
* 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) {
|
|||||||
* 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user