oom.h revision a63d83f427fbce97a6cea0db2e64b0eb8435cd10
1#ifndef __INCLUDE_LINUX_OOM_H 2#define __INCLUDE_LINUX_OOM_H 3 4/* 5 * /proc/<pid>/oom_adj set to -17 protects from the oom-killer 6 */ 7#define OOM_DISABLE (-17) 8/* inclusive */ 9#define OOM_ADJUST_MIN (-16) 10#define OOM_ADJUST_MAX 15 11 12/* 13 * /proc/<pid>/oom_score_adj set to OOM_SCORE_ADJ_MIN disables oom killing for 14 * pid. 15 */ 16#define OOM_SCORE_ADJ_MIN (-1000) 17#define OOM_SCORE_ADJ_MAX 1000 18 19#ifdef __KERNEL__ 20 21#include <linux/sched.h> 22#include <linux/types.h> 23#include <linux/nodemask.h> 24 25struct zonelist; 26struct notifier_block; 27struct mem_cgroup; 28struct task_struct; 29 30/* 31 * Types of limitations to the nodes from which allocations may occur 32 */ 33enum oom_constraint { 34 CONSTRAINT_NONE, 35 CONSTRAINT_CPUSET, 36 CONSTRAINT_MEMORY_POLICY, 37 CONSTRAINT_MEMCG, 38}; 39 40extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, 41 const nodemask_t *nodemask, unsigned long totalpages); 42extern int try_set_zonelist_oom(struct zonelist *zonelist, gfp_t gfp_flags); 43extern void clear_zonelist_oom(struct zonelist *zonelist, gfp_t gfp_flags); 44 45extern void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask, 46 int order, nodemask_t *mask); 47extern int register_oom_notifier(struct notifier_block *nb); 48extern int unregister_oom_notifier(struct notifier_block *nb); 49 50extern bool oom_killer_disabled; 51 52static inline void oom_killer_disable(void) 53{ 54 oom_killer_disabled = true; 55} 56 57static inline void oom_killer_enable(void) 58{ 59 oom_killer_disabled = false; 60} 61 62/* The badness from the OOM killer */ 63extern unsigned long badness(struct task_struct *p, struct mem_cgroup *mem, 64 const nodemask_t *nodemask, unsigned long uptime); 65 66/* sysctls */ 67extern int sysctl_oom_dump_tasks; 68extern int sysctl_oom_kill_allocating_task; 69extern int sysctl_panic_on_oom; 70#endif /* __KERNEL__*/ 71#endif /* _INCLUDE_LINUX_OOM_H */ 72