isc_condition_t work_available;
isc_thread_t thread;
unsigned int threadid;
+ unsigned int tasks_waiting;
isc__taskmgr_t *manager;
};
if (task != NULL) {
DEQUEUE(manager->queues[c].ready_tasks, task, ready_link);
+ manager->queues[c].tasks_waiting--;
if (ISC_LINK_LINKED(task, ready_priority_link)) {
DEQUEUE(manager->queues[c].ready_priority_tasks, task,
ready_priority_link);
static inline void
push_readyq(isc__taskmgr_t *manager, isc__task_t *task, int c) {
ENQUEUE(manager->queues[c].ready_tasks, task, ready_link);
+ manager->queues[c].tasks_waiting++;
if ((task->flags & TASK_F_PRIVILEGED) != 0) {
ENQUEUE(manager->queues[c].ready_priority_tasks, task,
ready_priority_link);
manager->queues[i].manager = manager;
manager->queues[i].threadid = i;
+ manager->queues[i].tasks_waiting = 0;
RUNTIME_CHECK(isc_thread_create(run, &manager->queues[i],
&manager->queues[i].thread)
== ISC_R_SUCCESS);