aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/freezer.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-11-21 15:32:23 -0500
committerTejun Heo <tj@kernel.org>2011-11-21 15:32:23 -0500
commita5be2d0d1a8746e7be5210e3d6b904455000443c (patch)
tree1dcfa2725057a73059a3f768f5f5f7825b5d56ef /kernel/freezer.c
parent8a32c441c1609f80e55df75422324a1151208f40 (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.c31
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
148static 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 */
167int thaw_process(struct task_struct *p) 157void __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}
178EXPORT_SYMBOL(thaw_process);