From 168542b9cfe6d53603317afa99c7cd58ed835629 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 14 Feb 2005 21:36:18 -0800 Subject: [TIMER]: Export avenrun for packet scheduler meta ematch. Signed-off-by: David S. Miller --- kernel/timer.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'kernel') diff --git a/kernel/timer.c b/kernel/timer.c index f764f0c2334b..551436ffeb23 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -844,6 +844,8 @@ static unsigned long count_active_tasks(void) */ unsigned long avenrun[3]; +EXPORT_SYMBOL(avenrun); + /* * calc_load - given tick count, update the avenrun load estimates. * This is called while holding a write_lock on xtime_lock. -- cgit v1.2.3 From 4e9c5abed9f041db9011f04ffbfdf9853c8481ce Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Mon, 14 Feb 2005 21:57:16 -0800 Subject: [WORKQUEUE]: Add cancel_rearming_delayed_work() From: Arjan van de Ven cancel_rearming_delayed_workqueue() is only used inside workqueue.c; make this function static (the more useful wrapper around it later in that function remains non-static and exported) Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: David S. Miller --- include/linux/workqueue.h | 1 + kernel/workqueue.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) (limited to 'kernel') diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index d37b664363b1..ff46f537ba9b 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -70,6 +70,7 @@ extern int current_is_keventd(void); extern int keventd_up(void); extern void init_workqueues(void); +void cancel_rearming_delayed_work(struct work_struct *work); /* * Kill off a pending schedule_delayed_work(). Note that the work callback diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 3993f7bdf5c2..f66befa4320f 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -423,6 +423,30 @@ void flush_scheduled_work(void) flush_workqueue(keventd_wq); } +/** + * cancel_rearming_delayed_workqueue - reliably kill off a delayed + * work whose handler rearms the delayed work. + * @wq: the controlling workqueue structure + * @work: the delayed work struct + */ +static void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, + struct work_struct *work) +{ + while (!cancel_delayed_work(work)) + flush_workqueue(wq); +} + +/** + * cancel_rearming_delayed_work - reliably kill off a delayed keventd + * work whose handler rearms the delayed work. + * @work: the delayed work struct + */ +void cancel_rearming_delayed_work(struct work_struct *work) +{ + cancel_rearming_delayed_workqueue(keventd_wq, work); +} +EXPORT_SYMBOL(cancel_rearming_delayed_work); + int keventd_up(void) { return keventd_wq != NULL; -- cgit v1.2.3