public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [Fwd: Corrections please ...]
@ 2008-08-19  1:53 Kevin Diggs
  2008-08-19  2:41 ` Dave Chinner
  0 siblings, 1 reply; 5+ messages in thread
From: Kevin Diggs @ 2008-08-19  1:53 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 84 bytes --]

Could someone ... anyone take a look at these kernel doc additions?

Thanks!

kevin

[-- Attachment #2: Corrections please ... --]
[-- Type: message/rfc822, Size: 4994 bytes --]

From: Kevin Diggs <kevdig@hypersurf.com>
To: linuxppc-dev@ozlabs.org
Subject: Corrections please ...
Date: Mon, 18 Aug 2008 13:59:50 -0700
Message-ID: <48A9E2C6.1030205@hypersurf.com>

Could I get any needed corrections on this. Especially on the "???"

[kevdig@PowerMac8600B linux-2.6.26]$ diff -U3 
include/linux/completion.{h.orig,h}|more
--- include/linux/completion.h.orig     2008-08-13 00:56:52.000000000 -0700
+++ include/linux/completion.h  2008-08-18 13:00:23.000000000 -0700
@@ -10,6 +10,16 @@

  #include <linux/wait.h>

+/**
+ * struct completion - structure used to maintain state for a "completion"
+ * @done:  counting variable used to signal completion
+ * @wait:  internal wait queue head; used for locking and synchronization
+ *
+ * This is the structure used to maintain the state for a "completion". See
+ * also:  complete(), wait_for_completion() (and friends _timeout,
+ * _interruptible, _interruptible_timeout, and _killable), 
init_completion(),
+ * and macros DECLARE_COMPLETION() and INIT_COMPLETION().
+ */
  struct completion {
         unsigned int done;
         wait_queue_head_t wait;
@@ -36,6 +46,13 @@
  # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work)
  #endif

+/**
+ * init_completion: - Initialize a dynamically allocated completion
+ * @x:  completion structure that is to be initialized
+ *
+ * This inline function will initialize a dynamically created completion
+ * structure.
+ */
  static inline void init_completion(struct completion *x)
  {
         x->done = 0;


--- kernel/sched.c.orig 2008-08-13 02:22:42.000000000 -0700
+++ kernel/sched.c      2008-08-18 13:31:03.000000000 -0700
@@ -4363,6 +4363,13 @@
  }
  EXPORT_SYMBOL_GPL(__wake_up_sync);     /* For internal use only */

+/**
+ * complete: - signals a single thread waiting on this completion
+ * @x:  holds the state of this particular completion
+ *
+ * This will wake up a single thread waiting on this completion. If 
multiple
+ * threads are waiting ???
+ */
  void complete(struct completion *x)
  {
         unsigned long flags;
@@ -4374,6 +4381,12 @@
  }
  EXPORT_SYMBOL(complete);

+/**
+ * complete_all: - signals all threads waiting on this completion
+ * @x:  holds the state of this particular completion
+ *
+ * This will wake up all threads waiting on this particular completion 
event.
+ */
  void complete_all(struct completion *x)
  {
         unsigned long flags;
@@ -4425,12 +4438,27 @@
         return timeout;
  }

+/**
+ * wait_for_completion: - waits for completion of a task
+ * @x:  holds the state of this particular completion
+ *
+ * This waits to be signaled for completion of a specific task. It is NOT
+ * interruptible and there is no timeout.
+ */
  void __sched wait_for_completion(struct completion *x)
  {
         wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE);
  }
  EXPORT_SYMBOL(wait_for_completion);

+/**
+ * wait_for_completion_timeout: - waits for completion of a task 
(w/timeout)
+ * @x:  holds the state of this particular completion
+ * @timeout:  timeout value in jiffies
+ *
+ * This waits to be signaled for completion of a specific task. It is NOT
+ * interruptible. But there is a timeout in jiffies.
+ */
  unsigned long __sched
  wait_for_completion_timeout(struct completion *x, unsigned long timeout)
  {
@@ -4438,6 +4466,13 @@
  }
  EXPORT_SYMBOL(wait_for_completion_timeout);

+/**
+ * wait_for_completion_interruptible: - waits for completion of a task 
(w/intr)
+ * @x:  holds the state of this particular completion
+ *
+ * This waits to be signaled for completion of a specific task. It is
+ * interruptible.
+ */
  int __sched wait_for_completion_interruptible(struct completion *x)
  {
         long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, 
TASK_INTERRUPTIBLE);
@@ -4447,6 +4482,14 @@
  }
  EXPORT_SYMBOL(wait_for_completion_interruptible);

+/**
+ * wait_for_completion_interruptible_timeout: - waits for completion 
(w/(to,int
r))
+ * @x:  holds the state of this particular completion
+ * @timeout:  timeout value in jiffies
+ *
+ * This waits to be signaled for completion of a specific task. It is
+ * interruptible. And there is a timeout in jiffies.
+ */
  unsigned long __sched
  wait_for_completion_interruptible_timeout(struct completion *x,
                                           unsigned long timeout)
@@ -4455,6 +4498,13 @@
  }
  EXPORT_SYMBOL(wait_for_completion_interruptible_timeout);

+/**
+ * wait_for_completion_killable: - waits for completion of a task 
(killable)
+ * @x:  holds the state of this particular completion
+ *
+ * This waits to be signaled for completion of a specific task. It is
+ * killable (???).
+ */
  int __sched wait_for_completion_killable(struct completion *x)
  {
         long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE);


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Fwd: Corrections please ...]
  2008-08-19  1:53 [Fwd: Corrections please ...] Kevin Diggs
@ 2008-08-19  2:41 ` Dave Chinner
  2008-08-19  8:07   ` Kevin Diggs
  0 siblings, 1 reply; 5+ messages in thread
From: Dave Chinner @ 2008-08-19  2:41 UTC (permalink / raw)
  To: Kevin Diggs; +Cc: linux-kernel

On Mon, Aug 18, 2008 at 06:53:51PM -0700, Kevin Diggs wrote:
> Could someone ... anyone take a look at these kernel doc additions?
.....
>
> +/**
> + * complete: - signals a single thread waiting on this completion
> + * @x:  holds the state of this particular completion
> + *
> + * This will wake up a single thread waiting on this completion. If  
> multiple

Your mailer appears to be wrapping lines.

> + * threads are waiting ???
> + */
>  void complete(struct completion *x)
>  {
>         unsigned long flags;

complete() will only wake one waiting thread. If there are multiple
waiters, then further calls to complete() are required to wake them,
or a single call to complete_all() could be used.

>  EXPORT_SYMBOL(wait_for_completion);
>
> +/**
> + * wait_for_completion_timeout: - waits for completion of a task  
> (w/timeout)
> + * @x:  holds the state of this particular completion
> + * @timeout:  timeout value in jiffies
> + *
> + * This waits to be signaled for completion of a specific task. It is NOT
> + * interruptible. But there is a timeout in jiffies.

Doesn't read very well.

"This waits for either a completion of a specific task to be signalled
or for a defined length of time. It is not interruptible."

> +/**
> + * wait_for_completion_interruptible_timeout: - waits for completion  
> (w/(to,int
> r))
> + * @x:  holds the state of this particular completion
> + * @timeout:  timeout value in jiffies
> + *
> + * This waits to be signaled for completion of a specific task. It is
> + * interruptible. And there is a timeout in jiffies.
> + */

Same as for wait_for_completion_timeout().

> +/**
> + * wait_for_completion_killable: - waits for completion of a task  
> (killable)
> + * @x:  holds the state of this particular completion
> + *
> + * This waits to be signaled for completion of a specific task. It is
> + * killable (???).
> + */

Killable means that a kill signal will interrupt the wait, but not
all signals will. Typically used in places where you want a user
ctrl-c or a kill command to succeed but don't want any other signal
to interrupt the completion.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Fwd: Corrections please ...]
  2008-08-19  2:41 ` Dave Chinner
@ 2008-08-19  8:07   ` Kevin Diggs
  2008-08-19 12:03     ` Stefan Richter
  2008-08-19 16:15     ` Marcin Slusarz
  0 siblings, 2 replies; 5+ messages in thread
From: Kevin Diggs @ 2008-08-19  8:07 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 864 bytes --]

Dave Chinner wrote:
> On Mon, Aug 18, 2008 at 06:53:51PM -0700, Kevin Diggs wrote:
> 
>>Could someone ... anyone take a look at these kernel doc additions?
> 
> .....
> 
>>+/**
>>+ * complete: - signals a single thread waiting on this completion
>>+ * @x:  holds the state of this particular completion
>>+ *
>>+ * This will wake up a single thread waiting on this completion. If  
>>multiple
> 
> 
> Your mailer appears to be wrapping lines.
> 
> 
>>+ * threads are waiting ???
>>+ */
>> void complete(struct completion *x)
>> {
>>        unsigned long flags;
> 
> 
> complete() will only wake one waiting thread. If there are multiple
> waiters, then further calls to complete() are required to wake them,
> or a single call to complete_all() could be used.
> 
> 
>> EXPORT_SYMBOL(wait_for_completion);
>>
>>+/**

Take 2 ...

Files attached this time ...

kevin

[-- Attachment #2: completion.h.diff --]
[-- Type: text/plain, Size: 1160 bytes --]

--- include/linux/completion.h.orig	2008-08-13 00:56:52.000000000 -0700
+++ include/linux/completion.h	2008-08-18 13:00:23.000000000 -0700
@@ -10,6 +10,16 @@
 
 #include <linux/wait.h>
 
+/**
+ * struct completion - structure used to maintain state for a "completion"
+ * @done:  counting variable used to signal completion
+ * @wait:  internal wait queue head; used for locking and synchronization
+ *
+ * This is the structure used to maintain the state for a "completion". See
+ * also:  complete(), wait_for_completion() (and friends _timeout,
+ * _interruptible, _interruptible_timeout, and _killable), init_completion(),
+ * and macros DECLARE_COMPLETION() and INIT_COMPLETION().
+ */
 struct completion {
 	unsigned int done;
 	wait_queue_head_t wait;
@@ -36,6 +46,13 @@
 # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work)
 #endif
 
+/**
+ * init_completion: - Initialize a dynamically allocated completion
+ * @x:  completion structure that is to be initialized
+ *
+ * This inline function will initialize a dynamically created completion
+ * structure.
+ */
 static inline void init_completion(struct completion *x)
 {
 	x->done = 0;

[-- Attachment #3: sched.c.diff --]
[-- Type: text/plain, Size: 3357 bytes --]

--- kernel/sched.c.orig	2008-08-13 02:22:42.000000000 -0700
+++ kernel/sched.c	2008-08-19 00:42:41.000000000 -0700
@@ -4363,6 +4363,16 @@
 }
 EXPORT_SYMBOL_GPL(__wake_up_sync);	/* For internal use only */
 
+/**
+ * complete: - signals a single thread waiting on this completion
+ * @x:  holds the state of this particular completion
+ *
+ * This will wake up a single thread waiting on this completion. If multiple
+ * threads are waiting ??? (looking for comments on which thread/context will
+ * be awakened?)
+ *
+ * See also complete_all().
+ */
 void complete(struct completion *x)
 {
 	unsigned long flags;
@@ -4374,6 +4384,12 @@
 }
 EXPORT_SYMBOL(complete);
 
+/**
+ * complete_all: - signals all threads waiting on this completion
+ * @x:  holds the state of this particular completion
+ *
+ * This will wake up all threads waiting on this particular completion event.
+ */
 void complete_all(struct completion *x)
 {
 	unsigned long flags;
@@ -4425,12 +4441,28 @@
 	return timeout;
 }
 
+/**
+ * wait_for_completion: - waits for completion of a task
+ * @x:  holds the state of this particular completion
+ *
+ * This waits to be signaled for completion of a specific task. It is NOT
+ * interruptible and there is no timeout.
+ */
 void __sched wait_for_completion(struct completion *x)
 {
 	wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE);
 }
 EXPORT_SYMBOL(wait_for_completion);
 
+/**
+ * wait_for_completion_timeout: - waits for completion of a task (w/timeout)
+ * @x:  holds the state of this particular completion
+ * @timeout:  timeout value in jiffies
+ *
+ * This waits for either a completion of a specific task to be signaled or for a
+ * specified timeout to expire. The timeout is in jiffies. It is not
+ * interruptible.
+ */
 unsigned long __sched
 wait_for_completion_timeout(struct completion *x, unsigned long timeout)
 {
@@ -4438,6 +4470,13 @@
 }
 EXPORT_SYMBOL(wait_for_completion_timeout);
 
+/**
+ * wait_for_completion_interruptible: - waits for completion of a task (w/intr)
+ * @x:  holds the state of this particular completion
+ *
+ * This waits for completion of a specific task to be signaled. It is
+ * interruptible.
+ */
 int __sched wait_for_completion_interruptible(struct completion *x)
 {
 	long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_INTERRUPTIBLE);
@@ -4447,6 +4486,14 @@
 }
 EXPORT_SYMBOL(wait_for_completion_interruptible);
 
+/**
+ * wait_for_completion_interruptible_timeout: - waits for completion (w/(to,intr))
+ * @x:  holds the state of this particular completion
+ * @timeout:  timeout value in jiffies
+ *
+ * This waits for either a completion of a specific task to be signaled or for a
+ * specified timeout to expire. It is interruptible. The timeout is in jiffies.
+ */
 unsigned long __sched
 wait_for_completion_interruptible_timeout(struct completion *x,
 					  unsigned long timeout)
@@ -4455,6 +4502,13 @@
 }
 EXPORT_SYMBOL(wait_for_completion_interruptible_timeout);
 
+/**
+ * wait_for_completion_killable: - waits for completion of a task (killable)
+ * @x:  holds the state of this particular completion
+ *
+ * This waits to be signaled for completion of a specific task. It can be
+ * interrupted by a kill signal.
+ */
 int __sched wait_for_completion_killable(struct completion *x)
 {
 	long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE);

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Fwd: Corrections please ...]
  2008-08-19  8:07   ` Kevin Diggs
@ 2008-08-19 12:03     ` Stefan Richter
  2008-08-19 16:15     ` Marcin Slusarz
  1 sibling, 0 replies; 5+ messages in thread
From: Stefan Richter @ 2008-08-19 12:03 UTC (permalink / raw)
  To: Kevin Diggs; +Cc: linux-kernel, Dave Chinner

Kevin Diggs wrote:
> Files attached this time ...

Alas several MUAs don't quote attachments in replies.  Hence the optimum
would be if you use a MUA which allows to insert text files without
whitespace change.

Also, when you respond on LKML, always use "reply to all" to keep
previous responders in a thread Cc'd.  This is necessary due to the high
volume of LKML, and in order to not force people to subscribe to LKML.


> --- include/linux/completion.h.orig	2008-08-13 00:56:52.000000000 -0700
> +++ include/linux/completion.h	2008-08-18 13:00:23.000000000 -0700
> @@ -10,6 +10,16 @@
>  
>  #include <linux/wait.h>
>  
> +/**
> + * struct completion - structure used to maintain state for a "completion"
> + * @done:  counting variable used to signal completion
> + * @wait:  internal wait queue head; used for locking and synchronization
> + *
> + * This is the structure used to maintain the state for a "completion". See
> + * also:  complete(), wait_for_completion() (and friends _timeout,
> + * _interruptible, _interruptible_timeout, and _killable), init_completion(),
> + * and macros DECLARE_COMPLETION() and INIT_COMPLETION().
> + */
>  struct completion {
>  	unsigned int done;
>  	wait_queue_head_t wait;

.done and .wait are not public AFAIU and should therefore not be
documented as an API.


> @@ -36,6 +46,13 @@
>  # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work)
>  #endif
>  
> +/**
> + * init_completion: - Initialize a dynamically allocated completion
> + * @x:  completion structure that is to be initialized
> + *
> + * This inline function will initialize a dynamically created completion
> + * structure.
> + */
>  static inline void init_completion(struct completion *x)
>  {
>  	x->done = 0;

The last sentence is redundant and should be omitted.
-- 
Stefan Richter
-=====-==--- =--- =--==
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Fwd: Corrections please ...]
  2008-08-19  8:07   ` Kevin Diggs
  2008-08-19 12:03     ` Stefan Richter
@ 2008-08-19 16:15     ` Marcin Slusarz
  1 sibling, 0 replies; 5+ messages in thread
From: Marcin Slusarz @ 2008-08-19 16:15 UTC (permalink / raw)
  To: Kevin Diggs; +Cc: linux-kernel

On Tue, Aug 19, 2008 at 01:07:35AM -0700, Kevin Diggs wrote:
> Dave Chinner wrote:
>> On Mon, Aug 18, 2008 at 06:53:51PM -0700, Kevin Diggs wrote:
>>> Could someone ... anyone take a look at these kernel doc additions?
>> .....
>>> +/**
>>> + * complete: - signals a single thread waiting on this completion
>>> + * @x:  holds the state of this particular completion
>>> + *
>>> + * This will wake up a single thread waiting on this completion. If  
>>> multiple
>> Your mailer appears to be wrapping lines.
>>> + * threads are waiting ???
>>> + */
>>> void complete(struct completion *x)
>>> {
>>>        unsigned long flags;
>> complete() will only wake one waiting thread. If there are multiple
>> waiters, then further calls to complete() are required to wake them,
>> or a single call to complete_all() could be used.
>>> EXPORT_SYMBOL(wait_for_completion);
>>>
>>> +/**
>
> Take 2 ...

You might want to read Documentation/SubmittingPatches.
(Especially points 2, 7, 11 and 12)

Marcin

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-08-19 16:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-19  1:53 [Fwd: Corrections please ...] Kevin Diggs
2008-08-19  2:41 ` Dave Chinner
2008-08-19  8:07   ` Kevin Diggs
2008-08-19 12:03     ` Stefan Richter
2008-08-19 16:15     ` Marcin Slusarz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox