linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PM/Freezer/Docs: Document the beauty of freeze/thaw semantics
@ 2012-02-02  2:28 Srivatsa S. Bhat
  2012-02-02 19:36 ` Rafael J. Wysocki
  0 siblings, 1 reply; 2+ messages in thread
From: Srivatsa S. Bhat @ 2012-02-02  2:28 UTC (permalink / raw)
  To: rjw; +Cc: tj, pavel, len.brown, rdunlap, linux-pm, linux-doc, linux-kernel

The way the different freeze/thaw functions encapsulate each other are quite
lovely from a design point of view. And as a side-effect, the way in which
they are invoked (cleaning up on failure for example) differs significantly
from how usual functions are dealt with. This is because of the underlying
semantics that govern the freezing and thawing of various tasks.

This subtle aspect that differentiates these functions from the rest, is
worth documenting.

Many thanks to Tejun Heo for providing enlightenment on this topic.

Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
---

 Documentation/power/freezing-of-tasks.txt |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/Documentation/power/freezing-of-tasks.txt b/Documentation/power/freezing-of-tasks.txt
index ebd7490..ec715cd 100644
--- a/Documentation/power/freezing-of-tasks.txt
+++ b/Documentation/power/freezing-of-tasks.txt
@@ -63,6 +63,27 @@ devices have been reinitialized, the function thaw_processes() is called in
 order to clear the PF_FROZEN flag for each frozen task.  Then, the tasks that
 have been frozen leave __refrigerator() and continue running.
 
+
+Rationale behind the functions dealing with freezing and thawing of tasks:
+-------------------------------------------------------------------------
+
+freeze_processes():
+  - freezes only userspace tasks
+
+freeze_kernel_threads():
+  - freezes all tasks (including kernel threads) because we can't freeze
+    kernel threads without freezing userspace tasks
+
+thaw_kernel_threads():
+  - thaws only kernel threads; this is particularly useful if we need to do
+    anything special in between thawing of kernel threads and thawing of
+    userspace tasks, or if we want to postpone the thawing of userspace tasks
+
+thaw_processes():
+  - thaws all tasks (including kernel threads) because we can't thaw userspace
+    tasks without thawing kernel threads
+
+
 III. Which kernel threads are freezable?
 
 Kernel threads are not freezable by default.  However, a kernel thread may clear


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

* Re: [PATCH] PM/Freezer/Docs: Document the beauty of freeze/thaw semantics
  2012-02-02  2:28 [PATCH] PM/Freezer/Docs: Document the beauty of freeze/thaw semantics Srivatsa S. Bhat
@ 2012-02-02 19:36 ` Rafael J. Wysocki
  0 siblings, 0 replies; 2+ messages in thread
From: Rafael J. Wysocki @ 2012-02-02 19:36 UTC (permalink / raw)
  To: Srivatsa S. Bhat
  Cc: tj, pavel, len.brown, rdunlap, linux-pm, linux-doc, linux-kernel

On Thursday, February 02, 2012, Srivatsa S. Bhat wrote:
> The way the different freeze/thaw functions encapsulate each other are quite
> lovely from a design point of view. And as a side-effect, the way in which
> they are invoked (cleaning up on failure for example) differs significantly
> from how usual functions are dealt with. This is because of the underlying
> semantics that govern the freezing and thawing of various tasks.
> 
> This subtle aspect that differentiates these functions from the rest, is
> worth documenting.
> 
> Many thanks to Tejun Heo for providing enlightenment on this topic.
> 
> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>

Applied.

Thanks,
Rafael


> ---
> 
>  Documentation/power/freezing-of-tasks.txt |   21 +++++++++++++++++++++
>  1 files changed, 21 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/power/freezing-of-tasks.txt b/Documentation/power/freezing-of-tasks.txt
> index ebd7490..ec715cd 100644
> --- a/Documentation/power/freezing-of-tasks.txt
> +++ b/Documentation/power/freezing-of-tasks.txt
> @@ -63,6 +63,27 @@ devices have been reinitialized, the function thaw_processes() is called in
>  order to clear the PF_FROZEN flag for each frozen task.  Then, the tasks that
>  have been frozen leave __refrigerator() and continue running.
>  
> +
> +Rationale behind the functions dealing with freezing and thawing of tasks:
> +-------------------------------------------------------------------------
> +
> +freeze_processes():
> +  - freezes only userspace tasks
> +
> +freeze_kernel_threads():
> +  - freezes all tasks (including kernel threads) because we can't freeze
> +    kernel threads without freezing userspace tasks
> +
> +thaw_kernel_threads():
> +  - thaws only kernel threads; this is particularly useful if we need to do
> +    anything special in between thawing of kernel threads and thawing of
> +    userspace tasks, or if we want to postpone the thawing of userspace tasks
> +
> +thaw_processes():
> +  - thaws all tasks (including kernel threads) because we can't thaw userspace
> +    tasks without thawing kernel threads
> +
> +
>  III. Which kernel threads are freezable?
>  
>  Kernel threads are not freezable by default.  However, a kernel thread may clear
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 


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

end of thread, other threads:[~2012-02-02 19:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-02  2:28 [PATCH] PM/Freezer/Docs: Document the beauty of freeze/thaw semantics Srivatsa S. Bhat
2012-02-02 19:36 ` Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).