* [PATCH][kernel-doc] Add DocBook documentation for workqueue functions
@ 2006-07-20 9:45 Rolf Eike Beer
2006-07-20 11:49 ` Stefan Richter
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Rolf Eike Beer @ 2006-07-20 9:45 UTC (permalink / raw)
To: Martin Waitz; +Cc: Randy Dunlap, Andrew Morton, linux-kernel
kernel/workqueue.c was omitted from generating kernel documentation. This
adds a new section "Workqueues and Kevents" and adds documentation for
some of the functions.
Some functions in this file already had DocBook-style comments, now they
finally become visible
Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
---
author Rolf Eike Beer <eike-kernel@sf-tec.de> Thu, 20 Jul 2006 11:38:50 +0200
Documentation/DocBook/kernel-api.tmpl | 3 ++
kernel/workqueue.c | 66 +++++++++++++++++++++++++++++++--
2 files changed, 65 insertions(+), 4 deletions(-)
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 1ae4dc0..2d0cc38 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -59,6 +59,9 @@
!Iinclude/linux/hrtimer.h
!Ekernel/hrtimer.c
</sect1>
+ <sect1><title>Workqueues and Kevents</title>
+!Ekernel/workqueue.c
+ </sect1>
<sect1><title>Internal Functions</title>
!Ikernel/exit.c
!Ikernel/signal.c
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 7fada82..8f1086e 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -93,9 +93,13 @@ static void __queue_work(struct cpu_work
spin_unlock_irqrestore(&cwq->lock, flags);
}
-/*
- * Queue work on a workqueue. Return non-zero if it was successfully
- * added.
+/**
+ * queue_work - queue work on a workqueue
+ *
+ * @wq: workqueue to use
+ * @work: work to queue
+ *
+ * Returns non-zero if it was successfully added.
*
* We queue the work to the CPU it was submitted, but there is no
* guarantee that it will be processed by that CPU.
@@ -128,6 +132,15 @@ static void delayed_work_timer_fn(unsign
__queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
}
+/**
+ * queue_delayed_work - queue work on a workqueue after delay
+ *
+ * @wq: workqueue to use
+ * @work: work to queue
+ * @delay: number of jiffies to wait before queueing
+ *
+ * Returns non-zero if it was successfully added.
+ */
int fastcall queue_delayed_work(struct workqueue_struct *wq,
struct work_struct *work, unsigned long delay)
{
@@ -150,6 +163,16 @@ int fastcall queue_delayed_work(struct w
}
EXPORT_SYMBOL_GPL(queue_delayed_work);
+/**
+ * queue_delayed_work_on - queue work on specific CPU after delay
+ *
+ * @cpu: CPU number to execute work on
+ * @wq: workqueue to use
+ * @work: work to queue
+ * @delay: number of jiffies to wait before queueing
+ *
+ * Returns non-zero if it was successfully added.
+ */
int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
struct work_struct *work, unsigned long delay)
{
@@ -275,9 +298,11 @@ static void flush_cpu_workqueue(struct c
}
}
-/*
+/**
* flush_workqueue - ensure that any scheduled work has run to completion.
*
+ * @wq: workqueue to flush
+ *
* Forces execution of the workqueue and blocks until its completion.
* This is typically used in driver shutdown handlers.
*
@@ -400,6 +425,13 @@ static void cleanup_workqueue_thread(str
kthread_stop(p);
}
+/**
+ * destroy_workqueue - safely terminate a workqueue
+ *
+ * @wq: target workqueue
+ *
+ * Safely destroy a workqueue. All work currently pending will be done first.
+ */
void destroy_workqueue(struct workqueue_struct *wq)
{
int cpu;
@@ -425,18 +457,44 @@ EXPORT_SYMBOL_GPL(destroy_workqueue);
static struct workqueue_struct *keventd_wq;
+/**
+ * schedule_work - put work task in global workqueue
+ *
+ * @work: job to be done
+ *
+ * This puts a job in the kernel-global workqueue.
+ */
int fastcall schedule_work(struct work_struct *work)
{
return queue_work(keventd_wq, work);
}
EXPORT_SYMBOL(schedule_work);
+/**
+ * schedule_work - put work task in global workqueue after delay
+ *
+ * @work: job to be done
+ * @delay: number of jiffies to wait
+ *
+ * After waiting for a given time this puts a job in the kernel-global
+ * workqueue.
+ */
int fastcall schedule_delayed_work(struct work_struct *work, unsigned long delay)
{
return queue_delayed_work(keventd_wq, work, delay);
}
EXPORT_SYMBOL(schedule_delayed_work);
+/**
+ * schedule_work - queue work in global workqueue on specific CPU after delay
+ *
+ * @cpu: cpu to use
+ * @work: job to be done
+ * @delay: number of jiffies to wait
+ *
+ * After waiting for a given time this puts a job in the kernel-global
+ * workqueue.
+ */
int schedule_delayed_work_on(int cpu,
struct work_struct *work, unsigned long delay)
{
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH][kernel-doc] Add DocBook documentation for workqueue functions
2006-07-20 9:45 [PATCH][kernel-doc] Add DocBook documentation for workqueue functions Rolf Eike Beer
@ 2006-07-20 11:49 ` Stefan Richter
2006-07-20 12:22 ` Rolf Eike Beer
2006-07-20 12:52 ` Randy.Dunlap
2006-07-20 13:11 ` Rolf Eike Beer
2 siblings, 1 reply; 6+ messages in thread
From: Stefan Richter @ 2006-07-20 11:49 UTC (permalink / raw)
To: Rolf Eike Beer; +Cc: Martin Waitz, Randy Dunlap, Andrew Morton, linux-kernel
Rolf Eike Beer wrote:
[...]
> int fastcall schedule_work(struct work_struct *work)
> {
> return queue_work(keventd_wq, work);
> }
> EXPORT_SYMBOL(schedule_work);
>
> +/**
> + * schedule_work - put work task in global workqueue after delay
This should read "schedule_delayed_work".
> + *
> + * @work: job to be done
> + * @delay: number of jiffies to wait
> + *
> + * After waiting for a given time this puts a job in the kernel-global
> + * workqueue.
> + */
> int fastcall schedule_delayed_work(struct work_struct *work, unsigned long delay)
> {
> return queue_delayed_work(keventd_wq, work, delay);
> }
> EXPORT_SYMBOL(schedule_delayed_work);
>
> +/**
> + * schedule_work - queue work in global workqueue on specific CPU after delay
"schedule_delayed_work_on"
> + *
> + * @cpu: cpu to use
> + * @work: job to be done
> + * @delay: number of jiffies to wait
> + *
> + * After waiting for a given time this puts a job in the kernel-global
> + * workqueue.
> + */
> int schedule_delayed_work_on(int cpu,
> struct work_struct *work, unsigned long delay)
> {
--
Stefan Richter
-=====-=-==- -=== =--==
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH][kernel-doc] Add DocBook documentation for workqueue functions
2006-07-20 11:49 ` Stefan Richter
@ 2006-07-20 12:22 ` Rolf Eike Beer
0 siblings, 0 replies; 6+ messages in thread
From: Rolf Eike Beer @ 2006-07-20 12:22 UTC (permalink / raw)
To: Stefan Richter; +Cc: Martin Waitz, Randy Dunlap, Andrew Morton, linux-kernel
[kernel-doc] Add DocBook documentation for workqueue functions
kernel/workqueue.c was omitted from generating kernel documentation. This
adds a new section "Workqueues and Kevents" and adds documentation for
some of the functions.
Some functions in this file already had DocBook-style comments, now they
finally become visible.
Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
---
commit 35687dd5b77d8dede736e7d622e1359f6c25b8f8
tree bbdd1cf655fb5ac9cd2a1205cd428fa0d6a21be8
parent a050dbf5ec50ebb71ebb455fac68dfd0a9e21bb6
author Rolf Eike Beer <eike-kernel@sf-tec.de> Thu, 20 Jul 2006 14:19:44 +0200
committer Rolf Eike Beer <beer@siso-eb-i34d.silicon-software.de> Thu, 20 Jul 2006 14:19:44 +0200
Documentation/DocBook/kernel-api.tmpl | 3 ++
kernel/workqueue.c | 66 +++++++++++++++++++++++++++++++--
2 files changed, 65 insertions(+), 4 deletions(-)
Version 2 of patch: fixed two copy&waste errors found by Stefan Richter. Also
added comment on CPU to description of schedule_delayed_work_on.
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 1ae4dc0..2d0cc38 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -59,6 +59,9 @@
!Iinclude/linux/hrtimer.h
!Ekernel/hrtimer.c
</sect1>
+ <sect1><title>Workqueues and Kevents</title>
+!Ekernel/workqueue.c
+ </sect1>
<sect1><title>Internal Functions</title>
!Ikernel/exit.c
!Ikernel/signal.c
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 7fada82..f7777b8 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -93,9 +93,13 @@ static void __queue_work(struct cpu_work
spin_unlock_irqrestore(&cwq->lock, flags);
}
-/*
- * Queue work on a workqueue. Return non-zero if it was successfully
- * added.
+/**
+ * queue_work - queue work on a workqueue
+ *
+ * @wq: workqueue to use
+ * @work: work to queue
+ *
+ * Returns non-zero if it was successfully added.
*
* We queue the work to the CPU it was submitted, but there is no
* guarantee that it will be processed by that CPU.
@@ -128,6 +132,15 @@ static void delayed_work_timer_fn(unsign
__queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
}
+/**
+ * queue_delayed_work - queue work on a workqueue after delay
+ *
+ * @wq: workqueue to use
+ * @work: work to queue
+ * @delay: number of jiffies to wait before queueing
+ *
+ * Returns non-zero if it was successfully added.
+ */
int fastcall queue_delayed_work(struct workqueue_struct *wq,
struct work_struct *work, unsigned long delay)
{
@@ -150,6 +163,16 @@ int fastcall queue_delayed_work(struct w
}
EXPORT_SYMBOL_GPL(queue_delayed_work);
+/**
+ * queue_delayed_work_on - queue work on specific CPU after delay
+ *
+ * @cpu: CPU number to execute work on
+ * @wq: workqueue to use
+ * @work: work to queue
+ * @delay: number of jiffies to wait before queueing
+ *
+ * Returns non-zero if it was successfully added.
+ */
int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
struct work_struct *work, unsigned long delay)
{
@@ -275,9 +298,11 @@ static void flush_cpu_workqueue(struct c
}
}
-/*
+/**
* flush_workqueue - ensure that any scheduled work has run to completion.
*
+ * @wq: workqueue to flush
+ *
* Forces execution of the workqueue and blocks until its completion.
* This is typically used in driver shutdown handlers.
*
@@ -400,6 +425,13 @@ static void cleanup_workqueue_thread(str
kthread_stop(p);
}
+/**
+ * destroy_workqueue - safely terminate a workqueue
+ *
+ * @wq: target workqueue
+ *
+ * Safely destroy a workqueue. All work currently pending will be done first.
+ */
void destroy_workqueue(struct workqueue_struct *wq)
{
int cpu;
@@ -425,18 +457,44 @@ EXPORT_SYMBOL_GPL(destroy_workqueue);
static struct workqueue_struct *keventd_wq;
+/**
+ * schedule_work - put work task in global workqueue
+ *
+ * @work: job to be done
+ *
+ * This puts a job in the kernel-global workqueue.
+ */
int fastcall schedule_work(struct work_struct *work)
{
return queue_work(keventd_wq, work);
}
EXPORT_SYMBOL(schedule_work);
+/**
+ * schedule_delayed_work - put work task in global workqueue after delay
+ *
+ * @work: job to be done
+ * @delay: number of jiffies to wait
+ *
+ * After waiting for a given time this puts a job in the kernel-global
+ * workqueue.
+ */
int fastcall schedule_delayed_work(struct work_struct *work, unsigned long delay)
{
return queue_delayed_work(keventd_wq, work, delay);
}
EXPORT_SYMBOL(schedule_delayed_work);
+/**
+ * schedule_delayed_work_on - queue work in global workqueue on CPU after delay
+ *
+ * @cpu: cpu to use
+ * @work: job to be done
+ * @delay: number of jiffies to wait
+ *
+ * After waiting for a given time this puts a job in the kernel-global
+ * workqueue on the specified CPU.
+ */
int schedule_delayed_work_on(int cpu,
struct work_struct *work, unsigned long delay)
{
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH][kernel-doc] Add DocBook documentation for workqueue functions
2006-07-20 9:45 [PATCH][kernel-doc] Add DocBook documentation for workqueue functions Rolf Eike Beer
2006-07-20 11:49 ` Stefan Richter
@ 2006-07-20 12:52 ` Randy.Dunlap
2006-07-20 13:03 ` Rolf Eike Beer
2006-07-20 13:11 ` Rolf Eike Beer
2 siblings, 1 reply; 6+ messages in thread
From: Randy.Dunlap @ 2006-07-20 12:52 UTC (permalink / raw)
To: Rolf Eike Beer; +Cc: Martin Waitz, Randy Dunlap, Andrew Morton, linux-kernel
On Thu, 20 Jul 2006, Rolf Eike Beer wrote:
> kernel/workqueue.c was omitted from generating kernel documentation. This
> adds a new section "Workqueues and Kevents" and adds documentation for
> some of the functions.
>
> Some functions in this file already had DocBook-style comments, now they
> finally become visible
Cool, thanks much.
Did you test it? There should not be an empty ("*" only) line
between the function name + short description and the function
parameter line(s). If you generate output for these functions,
the Description section will be there 2 times (i.e., repeated),
so please just delete those lines and it will be Good.
> Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
>
> ---
> author Rolf Eike Beer <eike-kernel@sf-tec.de> Thu, 20 Jul 2006 11:38:50 +0200
>
> Documentation/DocBook/kernel-api.tmpl | 3 ++
> kernel/workqueue.c | 66 +++++++++++++++++++++++++++++++--
> 2 files changed, 65 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
> index 1ae4dc0..2d0cc38 100644
> --- a/Documentation/DocBook/kernel-api.tmpl
> +++ b/Documentation/DocBook/kernel-api.tmpl
> @@ -59,6 +59,9 @@
> !Iinclude/linux/hrtimer.h
> !Ekernel/hrtimer.c
> </sect1>
> + <sect1><title>Workqueues and Kevents</title>
> +!Ekernel/workqueue.c
> + </sect1>
> <sect1><title>Internal Functions</title>
> !Ikernel/exit.c
> !Ikernel/signal.c
> diff --git a/kernel/workqueue.c b/kernel/workqueue.c
> index 7fada82..8f1086e 100644
> --- a/kernel/workqueue.c
> +++ b/kernel/workqueue.c
> @@ -93,9 +93,13 @@ static void __queue_work(struct cpu_work
> spin_unlock_irqrestore(&cwq->lock, flags);
> }
>
> -/*
> - * Queue work on a workqueue. Return non-zero if it was successfully
> - * added.
> +/**
> + * queue_work - queue work on a workqueue
> + *
> + * @wq: workqueue to use
> + * @work: work to queue
> + *
> + * Returns non-zero if it was successfully added.
> *
> * We queue the work to the CPU it was submitted, but there is no
> * guarantee that it will be processed by that CPU.
> @@ -128,6 +132,15 @@ static void delayed_work_timer_fn(unsign
> __queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
> }
>
> +/**
> + * queue_delayed_work - queue work on a workqueue after delay
> + *
> + * @wq: workqueue to use
> + * @work: work to queue
> + * @delay: number of jiffies to wait before queueing
> + *
> + * Returns non-zero if it was successfully added.
> + */
> int fastcall queue_delayed_work(struct workqueue_struct *wq,
> struct work_struct *work, unsigned long delay)
> {
> @@ -150,6 +163,16 @@ int fastcall queue_delayed_work(struct w
> }
> EXPORT_SYMBOL_GPL(queue_delayed_work);
>
> +/**
> + * queue_delayed_work_on - queue work on specific CPU after delay
> + *
> + * @cpu: CPU number to execute work on
> + * @wq: workqueue to use
> + * @work: work to queue
> + * @delay: number of jiffies to wait before queueing
> + *
> + * Returns non-zero if it was successfully added.
> + */
> int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
> struct work_struct *work, unsigned long delay)
> {
> @@ -275,9 +298,11 @@ static void flush_cpu_workqueue(struct c
> }
> }
>
> -/*
> +/**
> * flush_workqueue - ensure that any scheduled work has run to completion.
> *
> + * @wq: workqueue to flush
> + *
> * Forces execution of the workqueue and blocks until its completion.
> * This is typically used in driver shutdown handlers.
> *
> @@ -400,6 +425,13 @@ static void cleanup_workqueue_thread(str
> kthread_stop(p);
> }
>
> +/**
> + * destroy_workqueue - safely terminate a workqueue
> + *
> + * @wq: target workqueue
> + *
> + * Safely destroy a workqueue. All work currently pending will be done first.
> + */
> void destroy_workqueue(struct workqueue_struct *wq)
> {
> int cpu;
> @@ -425,18 +457,44 @@ EXPORT_SYMBOL_GPL(destroy_workqueue);
>
> static struct workqueue_struct *keventd_wq;
>
> +/**
> + * schedule_work - put work task in global workqueue
> + *
> + * @work: job to be done
> + *
> + * This puts a job in the kernel-global workqueue.
> + */
> int fastcall schedule_work(struct work_struct *work)
> {
> return queue_work(keventd_wq, work);
> }
> EXPORT_SYMBOL(schedule_work);
>
> +/**
> + * schedule_work - put work task in global workqueue after delay
> + *
> + * @work: job to be done
> + * @delay: number of jiffies to wait
> + *
> + * After waiting for a given time this puts a job in the kernel-global
> + * workqueue.
> + */
> int fastcall schedule_delayed_work(struct work_struct *work, unsigned long delay)
> {
> return queue_delayed_work(keventd_wq, work, delay);
> }
> EXPORT_SYMBOL(schedule_delayed_work);
>
> +/**
> + * schedule_work - queue work in global workqueue on specific CPU after delay
> + *
> + * @cpu: cpu to use
> + * @work: job to be done
> + * @delay: number of jiffies to wait
> + *
> + * After waiting for a given time this puts a job in the kernel-global
> + * workqueue.
> + */
> int schedule_delayed_work_on(int cpu,
> struct work_struct *work, unsigned long delay)
> {
>
--
~Randy
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH][kernel-doc] Add DocBook documentation for workqueue functions
2006-07-20 12:52 ` Randy.Dunlap
@ 2006-07-20 13:03 ` Rolf Eike Beer
0 siblings, 0 replies; 6+ messages in thread
From: Rolf Eike Beer @ 2006-07-20 13:03 UTC (permalink / raw)
To: Randy.Dunlap; +Cc: Martin Waitz, Andrew Morton, linux-kernel
Randy Dunlap wrote:
> On Thu, 20 Jul 2006, Rolf Eike Beer wrote:
> > kernel/workqueue.c was omitted from generating kernel documentation. This
> > adds a new section "Workqueues and Kevents" and adds documentation for
> > some of the functions.
> >
> > Some functions in this file already had DocBook-style comments, now they
> > finally become visible
>
> Cool, thanks much.
>
> Did you test it?
At least two of them.
> There should not be an empty ("*" only) line
> between the function name + short description and the function
> parameter line(s). If you generate output for these functions,
> the Description section will be there 2 times (i.e., repeated),
> so please just delete those lines and it will be Good.
Yes, I saw that. That's a very common problem all over the kernel. Now I see
that the nano-howto says it's this way, but I've seen the other way for
years. One example is vmalloc_32_user that I touched on monday.
I'll submit a version 3 of this soon. In the meantime "make mandocs" should
either warn of those or handle them the right way (aka ignore the newline).
If it would also warn on duplicate descriptions, at least in the same file,
this would have catched my copy&waste bug in the first version also.
Eike
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH][kernel-doc] Add DocBook documentation for workqueue functions
2006-07-20 9:45 [PATCH][kernel-doc] Add DocBook documentation for workqueue functions Rolf Eike Beer
2006-07-20 11:49 ` Stefan Richter
2006-07-20 12:52 ` Randy.Dunlap
@ 2006-07-20 13:11 ` Rolf Eike Beer
2 siblings, 0 replies; 6+ messages in thread
From: Rolf Eike Beer @ 2006-07-20 13:11 UTC (permalink / raw)
To: Martin Waitz; +Cc: Randy Dunlap, Andrew Morton, linux-kernel, Stefan Richter
[kernel-doc] Add DocBook documentation for workqueue functions
kernel/workqueue.c was omitted from generating kernel documentation. This
adds a new section "Workqueues and Kevents" and adds documentation for
some of the functions.
Some functions in this file already had DocBook-style comments, now they
finally become visible.
Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
---
commit 4223d94a33bdb10bad3f2c0adebb7fea40ae185a
tree 48f253544107cb9a5da1b438ff96c93a5f1b8964
parent a050dbf5ec50ebb71ebb455fac68dfd0a9e21bb6
author Rolf Eike Beer <eike-kernel@sf-tec.de> Thu, 20 Jul 2006 15:06:54 +0200
committer Rolf Eike Beer <beer@siso-eb-i34d.silicon-software.de> Thu, 20 Jul 2006 15:06:54 +0200
Documentation/DocBook/kernel-api.tmpl | 3 ++
kernel/workqueue.c | 58 +++++++++++++++++++++++++++++++--
2 files changed, 57 insertions(+), 4 deletions(-)
Version 2 of patch: fixed two copy&waste errors found by Stefan Richter. Also
added comment on CPU to description of schedule_delayed_work_on.
Version 3 of patch: removed newlines between short description and parameters
causing Description section to appear twice (thanks to Randy Dunlap).
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 1ae4dc0..2d0cc38 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -59,6 +59,9 @@
!Iinclude/linux/hrtimer.h
!Ekernel/hrtimer.c
</sect1>
+ <sect1><title>Workqueues and Kevents</title>
+!Ekernel/workqueue.c
+ </sect1>
<sect1><title>Internal Functions</title>
!Ikernel/exit.c
!Ikernel/signal.c
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 7fada82..61f959d 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -93,9 +93,12 @@ static void __queue_work(struct cpu_work
spin_unlock_irqrestore(&cwq->lock, flags);
}
-/*
- * Queue work on a workqueue. Return non-zero if it was successfully
- * added.
+/**
+ * queue_work - queue work on a workqueue
+ * @wq: workqueue to use
+ * @work: work to queue
+ *
+ * Returns non-zero if it was successfully added.
*
* We queue the work to the CPU it was submitted, but there is no
* guarantee that it will be processed by that CPU.
@@ -128,6 +131,14 @@ static void delayed_work_timer_fn(unsign
__queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
}
+/**
+ * queue_delayed_work - queue work on a workqueue after delay
+ * @wq: workqueue to use
+ * @work: work to queue
+ * @delay: number of jiffies to wait before queueing
+ *
+ * Returns non-zero if it was successfully added.
+ */
int fastcall queue_delayed_work(struct workqueue_struct *wq,
struct work_struct *work, unsigned long delay)
{
@@ -150,6 +161,15 @@ int fastcall queue_delayed_work(struct w
}
EXPORT_SYMBOL_GPL(queue_delayed_work);
+/**
+ * queue_delayed_work_on - queue work on specific CPU after delay
+ * @cpu: CPU number to execute work on
+ * @wq: workqueue to use
+ * @work: work to queue
+ * @delay: number of jiffies to wait before queueing
+ *
+ * Returns non-zero if it was successfully added.
+ */
int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
struct work_struct *work, unsigned long delay)
{
@@ -275,8 +295,9 @@ static void flush_cpu_workqueue(struct c
}
}
-/*
+/**
* flush_workqueue - ensure that any scheduled work has run to completion.
+ * @wq: workqueue to flush
*
* Forces execution of the workqueue and blocks until its completion.
* This is typically used in driver shutdown handlers.
@@ -400,6 +421,12 @@ static void cleanup_workqueue_thread(str
kthread_stop(p);
}
+/**
+ * destroy_workqueue - safely terminate a workqueue
+ * @wq: target workqueue
+ *
+ * Safely destroy a workqueue. All work currently pending will be done first.
+ */
void destroy_workqueue(struct workqueue_struct *wq)
{
int cpu;
@@ -425,18 +452,41 @@ EXPORT_SYMBOL_GPL(destroy_workqueue);
static struct workqueue_struct *keventd_wq;
+/**
+ * schedule_work - put work task in global workqueue
+ * @work: job to be done
+ *
+ * This puts a job in the kernel-global workqueue.
+ */
int fastcall schedule_work(struct work_struct *work)
{
return queue_work(keventd_wq, work);
}
EXPORT_SYMBOL(schedule_work);
+/**
+ * schedule_delayed_work - put work task in global workqueue after delay
+ * @work: job to be done
+ * @delay: number of jiffies to wait
+ *
+ * After waiting for a given time this puts a job in the kernel-global
+ * workqueue.
+ */
int fastcall schedule_delayed_work(struct work_struct *work, unsigned long delay)
{
return queue_delayed_work(keventd_wq, work, delay);
}
EXPORT_SYMBOL(schedule_delayed_work);
+/**
+ * schedule_delayed_work_on - queue work in global workqueue on CPU after delay
+ * @cpu: cpu to use
+ * @work: job to be done
+ * @delay: number of jiffies to wait
+ *
+ * After waiting for a given time this puts a job in the kernel-global
+ * workqueue on the specified CPU.
+ */
int schedule_delayed_work_on(int cpu,
struct work_struct *work, unsigned long delay)
{
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-07-20 13:09 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-20 9:45 [PATCH][kernel-doc] Add DocBook documentation for workqueue functions Rolf Eike Beer
2006-07-20 11:49 ` Stefan Richter
2006-07-20 12:22 ` Rolf Eike Beer
2006-07-20 12:52 ` Randy.Dunlap
2006-07-20 13:03 ` Rolf Eike Beer
2006-07-20 13:11 ` Rolf Eike Beer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox