summaryrefslogtreecommitdiffstats
path: root/lib/workqueue.c
diff options
context:
space:
mode:
authorpaul <paul>2006-02-02 18:50:19 +0100
committerpaul <paul>2006-02-02 18:50:19 +0100
commit306d8890439cdb9128d063ee2f77700a11e6843c (patch)
treefa5c8e035891cc83e9f5cfa80343df4bcac40fb7 /lib/workqueue.c
parent[zebra] Display flags on their line in 'show interface'. (diff)
downloadfrr-306d8890439cdb9128d063ee2f77700a11e6843c.tar.xz
frr-306d8890439cdb9128d063ee2f77700a11e6843c.zip
[lib/workqueue] remove the useless 'delay' factor.
2006-02-02 Paul Jakma <paul.jakma@sun.com> * workqueue.h: (struct work_queue) Remove the delay field. It served no purpose and just introduced bad behaviour. Should be excised before its allowed to escape into 1.0. This removes need for the 'flood' and runs_since_clear fields. * workqueue.c: (general) excise delay factor between queue runs, hence the 'flood' crap too.. See above. * bgp_route.c: (bgp_{clear_node,process}_queue_init) delay field is removed from workqueue spec.
Diffstat (limited to 'lib/workqueue.c')
-rw-r--r--lib/workqueue.c37
1 files changed, 12 insertions, 25 deletions
diff --git a/lib/workqueue.c b/lib/workqueue.c
index 0c61f5c4f..1fa16dedb 100644
--- a/lib/workqueue.c
+++ b/lib/workqueue.c
@@ -82,9 +82,7 @@ work_queue_new (struct thread_master *m, const char *queue_name)
new->cycles.granularity = WORK_QUEUE_MIN_GRANULARITY;
/* Default values, can be overriden by caller */
- new->spec.delay = WORK_QUEUE_DEFAULT_DELAY;
new->spec.hold = WORK_QUEUE_DEFAULT_HOLD;
- new->spec.flood = WORK_QUEUE_DEFAULT_FLOOD;
return new;
}
@@ -133,7 +131,7 @@ work_queue_add (struct work_queue *wq, void *data)
item->data = data;
listnode_add (wq->items, item);
- work_queue_schedule (wq, wq->spec.delay);
+ work_queue_schedule (wq, wq->spec.hold);
return;
}
@@ -172,14 +170,14 @@ DEFUN(show_work_queues,
struct work_queue *wq;
vty_out (vty,
- "%c%c %8s %11s %8s %21s%s",
- ' ', ' ', "List","(ms) ","Q. Runs","Cycle Counts ",
+ "%c %8s %5s %8s %21s%s",
+ ' ', "List","(ms) ","Q. Runs","Cycle Counts ",
VTY_NEWLINE);
vty_out (vty,
- "%c%c %8s %5s %5s %8s %7s %6s %6s %s%s",
- 'P', 'F',
+ "%c %8s %5s %8s %7s %6s %6s %s%s",
+ 'P',
"Items",
- "Delay","Hold",
+ "Hold",
"Total",
"Best","Gran.","Avg.",
"Name",
@@ -187,11 +185,10 @@ DEFUN(show_work_queues,
for (ALL_LIST_ELEMENTS_RO ((&work_queues), node, wq))
{
- vty_out (vty,"%c%c %8d %5d %5d %8ld %7d %6d %6u %s%s",
+ vty_out (vty,"%c %8d %5d %8ld %7d %6d %6u %s%s",
(wq->flags == WQ_PLUGGED ? 'P' : ' '),
- (wq->runs_since_clear >= wq->spec.flood ? 'F' : ' '),
listcount (wq->items),
- wq->spec.delay, wq->spec.hold,
+ wq->spec.hold,
wq->runs,
wq->cycles.best, wq->cycles.granularity,
(wq->runs) ?
@@ -226,7 +223,7 @@ work_queue_unplug (struct work_queue *wq)
wq->flags = WQ_UNPLUGGED;
/* if thread isnt already waiting, add one */
- work_queue_schedule (wq, wq->spec.delay);
+ work_queue_schedule (wq, wq->spec.hold);
}
/* timer thread to process a work queue
@@ -370,19 +367,9 @@ stats:
/* Is the queue done yet? If it is, call the completion callback. */
if (listcount (wq->items) > 0)
- {
- if (++(wq->runs_since_clear) < wq->spec.flood)
- work_queue_schedule (wq, wq->spec.hold);
- else
- work_queue_schedule (wq, 0); /* queue flooded, go into overdrive */
- }
- else
- {
- wq->runs_since_clear = 0;
-
- if (wq->spec.completion_func)
- wq->spec.completion_func (wq);
- }
+ work_queue_schedule (wq, 0);
+ else if (wq->spec.completion_func)
+ wq->spec.completion_func (wq);
return 0;
}