Skip to contentSkip to conversation

Add DocBook documentation for workqueue functions

PATCH In review Rolf Eike Beer 3 participants 6 messages Jul 20, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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

---
author Rolf Eike Beer <[email protected]> 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(-)
Documentation/DocBook/kernel-api.tmpl +3 -0
index 1ae4dc0..2d0cc38 100644
@@ -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
kernel/workqueue.c +62 -4

116 lines not on this page · raw message

#1 lore raw

Rolf Eike Beer wrote:
[...]

kernel/workqueue.c EXPORT_SYMBOL_GPL(destroy_workqueue); · line 474

Quoted 8 lines

int fastcall schedule_work(struct work_struct *work) {

kernel/workqueue.c +2 -0
 	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".

Quoted 9 lines

+ *
+ * @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) {

kernel/workqueue.c EXPORT_SYMBOL_GPL(destroy_workqueue); · line 489

Quoted 6 lines
kernel/workqueue.c +2 -0
 	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"

Quoted 11 lines

+ *
+ * @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)
{

Signature · 3 lines
Stefan Richter
-=====-=-==- -=== =--==
http://arcgraph.de/sr/
#2 lore raw

PATCH 1/1 Add DocBook documentation for workqueue functions

[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.

---
commit 35687dd5b77d8dede736e7d622e1359f6c25b8f8
tree bbdd1cf655fb5ac9cd2a1205cd428fa0d6a21be8
parent a050dbf5ec50ebb71ebb455fac68dfd0a9e21bb6
author Rolf Eike Beer <[email protected]> Thu, 20 Jul 2006 14:19:44 +0200 committer Rolf Eike Beer <[email protected]> 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.

Documentation/DocBook/kernel-api.tmpl +3 -0
index 1ae4dc0..2d0cc38 100644
@@ -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
kernel/workqueue.c +62 -4

116 lines not on this page · raw message

#3 lore raw
In reply to Rolf Eike Beer
Quoted 6 lines · Rolf Eike Beer

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.

Quoted 150 lines

---
author Rolf Eike Beer <[email protected]> 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(-)
Documentation/DocBook/kernel-api.tmpl +3 -0
index 1ae4dc0..2d0cc38 100644
@@ -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
kernel/workqueue.c +62 -4
index 7fada82..8f1086e 100644
@@ -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)
 {
Signature · 1 line
~Randy
#4 lore raw
Quoted 11 lines · Randy Dunlap
Quoted 6 lines · Rolf Eike Beer

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.

Quoted 5 lines

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

#5 lore raw

PATCH 1/1 Add DocBook documentation for workqueue functions

In reply to Rolf Eike Beer

[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.

---
commit 4223d94a33bdb10bad3f2c0adebb7fea40ae185a
tree 48f253544107cb9a5da1b438ff96c93a5f1b8964
parent a050dbf5ec50ebb71ebb455fac68dfd0a9e21bb6
author Rolf Eike Beer <[email protected]> Thu, 20 Jul 2006 15:06:54 +0200 committer Rolf Eike Beer <[email protected]> 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).

Documentation/DocBook/kernel-api.tmpl +3 -0
index 1ae4dc0..2d0cc38 100644
@@ -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
kernel/workqueue.c +54 -4

107 lines not on this page · raw message