diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/freezer.h | 84 | ||||
-rw-r--r-- | include/linux/sched.h | 81 |
2 files changed, 84 insertions, 81 deletions
diff --git a/include/linux/freezer.h b/include/linux/freezer.h new file mode 100644 index 000000000000..266373f74445 --- /dev/null +++ b/include/linux/freezer.h | |||
@@ -0,0 +1,84 @@ | |||
1 | /* Freezer declarations */ | ||
2 | |||
3 | #ifdef CONFIG_PM | ||
4 | /* | ||
5 | * Check if a process has been frozen | ||
6 | */ | ||
7 | static inline int frozen(struct task_struct *p) | ||
8 | { | ||
9 | return p->flags & PF_FROZEN; | ||
10 | } | ||
11 | |||
12 | /* | ||
13 | * Check if there is a request to freeze a process | ||
14 | */ | ||
15 | static inline int freezing(struct task_struct *p) | ||
16 | { | ||
17 | return p->flags & PF_FREEZE; | ||
18 | } | ||
19 | |||
20 | /* | ||
21 | * Request that a process be frozen | ||
22 | * FIXME: SMP problem. We may not modify other process' flags! | ||
23 | */ | ||
24 | static inline void freeze(struct task_struct *p) | ||
25 | { | ||
26 | p->flags |= PF_FREEZE; | ||
27 | } | ||
28 | |||
29 | /* | ||
30 | * Sometimes we may need to cancel the previous 'freeze' request | ||
31 | */ | ||
32 | static inline void do_not_freeze(struct task_struct *p) | ||
33 | { | ||
34 | p->flags &= ~PF_FREEZE; | ||
35 | } | ||
36 | |||
37 | /* | ||
38 | * Wake up a frozen process | ||
39 | */ | ||
40 | static inline int thaw_process(struct task_struct *p) | ||
41 | { | ||
42 | if (frozen(p)) { | ||
43 | p->flags &= ~PF_FROZEN; | ||
44 | wake_up_process(p); | ||
45 | return 1; | ||
46 | } | ||
47 | return 0; | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | * freezing is complete, mark process as frozen | ||
52 | */ | ||
53 | static inline void frozen_process(struct task_struct *p) | ||
54 | { | ||
55 | p->flags = (p->flags & ~PF_FREEZE) | PF_FROZEN; | ||
56 | } | ||
57 | |||
58 | extern void refrigerator(void); | ||
59 | extern int freeze_processes(void); | ||
60 | extern void thaw_processes(void); | ||
61 | |||
62 | static inline int try_to_freeze(void) | ||
63 | { | ||
64 | if (freezing(current)) { | ||
65 | refrigerator(); | ||
66 | return 1; | ||
67 | } else | ||
68 | return 0; | ||
69 | } | ||
70 | #else | ||
71 | static inline int frozen(struct task_struct *p) { return 0; } | ||
72 | static inline int freezing(struct task_struct *p) { return 0; } | ||
73 | static inline void freeze(struct task_struct *p) { BUG(); } | ||
74 | static inline int thaw_process(struct task_struct *p) { return 1; } | ||
75 | static inline void frozen_process(struct task_struct *p) { BUG(); } | ||
76 | |||
77 | static inline void refrigerator(void) {} | ||
78 | static inline int freeze_processes(void) { BUG(); return 0; } | ||
79 | static inline void thaw_processes(void) {} | ||
80 | |||
81 | static inline int try_to_freeze(void) { return 0; } | ||
82 | |||
83 | |||
84 | #endif | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index acfd2e15c5f2..837a012f573c 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1618,87 +1618,6 @@ extern int sched_create_sysfs_power_savings_entries(struct sysdev_class *cls); | |||
1618 | 1618 | ||
1619 | extern void normalize_rt_tasks(void); | 1619 | extern void normalize_rt_tasks(void); |
1620 | 1620 | ||
1621 | #ifdef CONFIG_PM | ||
1622 | /* | ||
1623 | * Check if a process has been frozen | ||
1624 | */ | ||
1625 | static inline int frozen(struct task_struct *p) | ||
1626 | { | ||
1627 | return p->flags & PF_FROZEN; | ||
1628 | } | ||
1629 | |||
1630 | /* | ||
1631 | * Check if there is a request to freeze a process | ||
1632 | */ | ||
1633 | static inline int freezing(struct task_struct *p) | ||
1634 | { | ||
1635 | return p->flags & PF_FREEZE; | ||
1636 | } | ||
1637 | |||
1638 | /* | ||
1639 | * Request that a process be frozen | ||
1640 | * FIXME: SMP problem. We may not modify other process' flags! | ||
1641 | */ | ||
1642 | static inline void freeze(struct task_struct *p) | ||
1643 | { | ||
1644 | p->flags |= PF_FREEZE; | ||
1645 | } | ||
1646 | |||
1647 | /* | ||
1648 | * Sometimes we may need to cancel the previous 'freeze' request | ||
1649 | */ | ||
1650 | static inline void do_not_freeze(struct task_struct *p) | ||
1651 | { | ||
1652 | p->flags &= ~PF_FREEZE; | ||
1653 | } | ||
1654 | |||
1655 | /* | ||
1656 | * Wake up a frozen process | ||
1657 | */ | ||
1658 | static inline int thaw_process(struct task_struct *p) | ||
1659 | { | ||
1660 | if (frozen(p)) { | ||
1661 | p->flags &= ~PF_FROZEN; | ||
1662 | wake_up_process(p); | ||
1663 | return 1; | ||
1664 | } | ||
1665 | return 0; | ||
1666 | } | ||
1667 | |||
1668 | /* | ||
1669 | * freezing is complete, mark process as frozen | ||
1670 | */ | ||
1671 | static inline void frozen_process(struct task_struct *p) | ||
1672 | { | ||
1673 | p->flags = (p->flags & ~PF_FREEZE) | PF_FROZEN; | ||
1674 | } | ||
1675 | |||
1676 | extern void refrigerator(void); | ||
1677 | extern int freeze_processes(void); | ||
1678 | extern void thaw_processes(void); | ||
1679 | |||
1680 | static inline int try_to_freeze(void) | ||
1681 | { | ||
1682 | if (freezing(current)) { | ||
1683 | refrigerator(); | ||
1684 | return 1; | ||
1685 | } else | ||
1686 | return 0; | ||
1687 | } | ||
1688 | #else | ||
1689 | static inline int frozen(struct task_struct *p) { return 0; } | ||
1690 | static inline int freezing(struct task_struct *p) { return 0; } | ||
1691 | static inline void freeze(struct task_struct *p) { BUG(); } | ||
1692 | static inline int thaw_process(struct task_struct *p) { return 1; } | ||
1693 | static inline void frozen_process(struct task_struct *p) { BUG(); } | ||
1694 | |||
1695 | static inline void refrigerator(void) {} | ||
1696 | static inline int freeze_processes(void) { BUG(); return 0; } | ||
1697 | static inline void thaw_processes(void) {} | ||
1698 | |||
1699 | static inline int try_to_freeze(void) { return 0; } | ||
1700 | |||
1701 | #endif /* CONFIG_PM */ | ||
1702 | #endif /* __KERNEL__ */ | 1621 | #endif /* __KERNEL__ */ |
1703 | 1622 | ||
1704 | #endif | 1623 | #endif |