Re: [PATCH] PM/Freezer/Docs: Document the beauty of freeze/thaw semantics

From: Rafael J. Wysocki
Date: Thu Feb 02 2012 - 14:33:16 EST


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@xxxxxxxxxxxxxxxxxx>

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@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/