Skip to content

Commit

Permalink
PM / Freezer / Docs: Document the beauty of freeze/thaw semantics
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
  • Loading branch information
Srivatsa S. Bhat authored and Rafael J. Wysocki committed Feb 9, 2012
1 parent 8916e37 commit 9045a05
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions Documentation/power/freezing-of-tasks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 9045a05

Please sign in to comment.