diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/oom.h | 19 | ||||
-rw-r--r-- | include/linux/sched.h | 1 | ||||
-rw-r--r-- | include/linux/types.h | 1 |
3 files changed, 19 insertions, 2 deletions
diff --git a/include/linux/oom.h b/include/linux/oom.h index 922dab164eb0..da60007075b5 100644 --- a/include/linux/oom.h +++ b/include/linux/oom.h | |||
@@ -29,8 +29,23 @@ enum oom_scan_t { | |||
29 | OOM_SCAN_SELECT, /* always select this thread first */ | 29 | OOM_SCAN_SELECT, /* always select this thread first */ |
30 | }; | 30 | }; |
31 | 31 | ||
32 | extern void compare_swap_oom_score_adj(short old_val, short new_val); | 32 | /* Thread is the potential origin of an oom condition; kill first on oom */ |
33 | extern short test_set_oom_score_adj(short new_val); | 33 | #define OOM_FLAG_ORIGIN ((__force oom_flags_t)0x1) |
34 | |||
35 | static inline void set_current_oom_origin(void) | ||
36 | { | ||
37 | current->signal->oom_flags |= OOM_FLAG_ORIGIN; | ||
38 | } | ||
39 | |||
40 | static inline void clear_current_oom_origin(void) | ||
41 | { | ||
42 | current->signal->oom_flags &= ~OOM_FLAG_ORIGIN; | ||
43 | } | ||
44 | |||
45 | static inline bool oom_task_origin(const struct task_struct *p) | ||
46 | { | ||
47 | return !!(p->signal->oom_flags & OOM_FLAG_ORIGIN); | ||
48 | } | ||
34 | 49 | ||
35 | extern unsigned long oom_badness(struct task_struct *p, | 50 | extern unsigned long oom_badness(struct task_struct *p, |
36 | struct mem_cgroup *memcg, const nodemask_t *nodemask, | 51 | struct mem_cgroup *memcg, const nodemask_t *nodemask, |
diff --git a/include/linux/sched.h b/include/linux/sched.h index ed30456152da..3e387df065fc 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -631,6 +631,7 @@ struct signal_struct { | |||
631 | struct rw_semaphore group_rwsem; | 631 | struct rw_semaphore group_rwsem; |
632 | #endif | 632 | #endif |
633 | 633 | ||
634 | oom_flags_t oom_flags; | ||
634 | short oom_score_adj; /* OOM kill score adjustment */ | 635 | short oom_score_adj; /* OOM kill score adjustment */ |
635 | short oom_score_adj_min; /* OOM kill score adjustment min value. | 636 | short oom_score_adj_min; /* OOM kill score adjustment min value. |
636 | * Only settable by CAP_SYS_RESOURCE. */ | 637 | * Only settable by CAP_SYS_RESOURCE. */ |
diff --git a/include/linux/types.h b/include/linux/types.h index 1cc0e4b9a048..4d118ba11349 100644 --- a/include/linux/types.h +++ b/include/linux/types.h | |||
@@ -156,6 +156,7 @@ typedef u32 dma_addr_t; | |||
156 | #endif | 156 | #endif |
157 | typedef unsigned __bitwise__ gfp_t; | 157 | typedef unsigned __bitwise__ gfp_t; |
158 | typedef unsigned __bitwise__ fmode_t; | 158 | typedef unsigned __bitwise__ fmode_t; |
159 | typedef unsigned __bitwise__ oom_flags_t; | ||
159 | 160 | ||
160 | #ifdef CONFIG_PHYS_ADDR_T_64BIT | 161 | #ifdef CONFIG_PHYS_ADDR_T_64BIT |
161 | typedef u64 phys_addr_t; | 162 | typedef u64 phys_addr_t; |