aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/power/process.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/kernel/power/process.c b/kernel/power/process.c
index 2cea2658e98..d31d638ab4c 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -31,6 +31,18 @@ static inline int freezeable(struct task_struct * p)
31 return 1; 31 return 1;
32} 32}
33 33
34/*
35 * freezing is complete, mark current process as frozen
36 */
37static inline void frozen_process(void)
38{
39 if (!unlikely(current->flags & PF_NOFREEZE)) {
40 current->flags |= PF_FROZEN;
41 wmb();
42 }
43 clear_tsk_thread_flag(current, TIF_FREEZE);
44}
45
34/* Refrigerator is place where frozen processes are stored :-). */ 46/* Refrigerator is place where frozen processes are stored :-). */
35void refrigerator(void) 47void refrigerator(void)
36{ 48{
@@ -40,7 +52,7 @@ void refrigerator(void)
40 52
41 task_lock(current); 53 task_lock(current);
42 if (freezing(current)) { 54 if (freezing(current)) {
43 frozen_process(current); 55 frozen_process();
44 task_unlock(current); 56 task_unlock(current);
45 } else { 57 } else {
46 task_unlock(current); 58 task_unlock(current);