diff options
author | Tejun Heo <tj@kernel.org> | 2011-11-21 15:32:23 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2011-11-21 15:32:23 -0500 |
commit | a5be2d0d1a8746e7be5210e3d6b904455000443c (patch) | |
tree | 1dcfa2725057a73059a3f768f5f5f7825b5d56ef /kernel/freezer.c | |
parent | 8a32c441c1609f80e55df75422324a1151208f40 (diff) |
freezer: rename thaw_process() to __thaw_task() and simplify the implementation
thaw_process() now has only internal users - system and cgroup
freezers. Remove the unnecessary return value, rename, unexport and
collapse __thaw_process() into it. This will help further updates to
the freezer code.
-v3: oom_kill grew a use of thaw_process() while this patch was
pending. Convert it to use __thaw_task() for now. In the longer
term, this should be handled by allowing tasks to die if killed
even if it's frozen.
-v2: minor style update as suggested by Matt.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Paul Menage <menage@google.com>
Cc: Matt Helsley <matthltc@us.ibm.com>
Diffstat (limited to 'kernel/freezer.c')
-rw-r--r-- | kernel/freezer.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/kernel/freezer.c b/kernel/freezer.c index b83c30e9483a..c851d588e29f 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c | |||
@@ -145,18 +145,8 @@ void cancel_freezing(struct task_struct *p) | |||
145 | } | 145 | } |
146 | } | 146 | } |
147 | 147 | ||
148 | static int __thaw_process(struct task_struct *p) | ||
149 | { | ||
150 | if (frozen(p)) { | ||
151 | p->flags &= ~PF_FROZEN; | ||
152 | return 1; | ||
153 | } | ||
154 | clear_freeze_flag(p); | ||
155 | return 0; | ||
156 | } | ||
157 | |||
158 | /* | 148 | /* |
159 | * Wake up a frozen process | 149 | * Wake up a frozen task |
160 | * | 150 | * |
161 | * task_lock() is needed to prevent the race with refrigerator() which may | 151 | * task_lock() is needed to prevent the race with refrigerator() which may |
162 | * occur if the freezing of tasks fails. Namely, without the lock, if the | 152 | * occur if the freezing of tasks fails. Namely, without the lock, if the |
@@ -164,15 +154,18 @@ static int __thaw_process(struct task_struct *p) | |||
164 | * refrigerator() could call frozen_process(), in which case the task would be | 154 | * refrigerator() could call frozen_process(), in which case the task would be |
165 | * frozen and no one would thaw it. | 155 | * frozen and no one would thaw it. |
166 | */ | 156 | */ |
167 | int thaw_process(struct task_struct *p) | 157 | void __thaw_task(struct task_struct *p) |
168 | { | 158 | { |
159 | bool was_frozen; | ||
160 | |||
169 | task_lock(p); | 161 | task_lock(p); |
170 | if (__thaw_process(p) == 1) { | 162 | was_frozen = frozen(p); |
171 | task_unlock(p); | 163 | if (was_frozen) |
172 | wake_up_process(p); | 164 | p->flags &= ~PF_FROZEN; |
173 | return 1; | 165 | else |
174 | } | 166 | clear_freeze_flag(p); |
175 | task_unlock(p); | 167 | task_unlock(p); |
176 | return 0; | 168 | |
169 | if (was_frozen) | ||
170 | wake_up_process(p); | ||
177 | } | 171 | } |
178 | EXPORT_SYMBOL(thaw_process); | ||