oom, oom_reaper: disable oom_reaper for oom_kill_allocating_task
[cascardo/linux.git] / include / linux / sched.h
index 34495d2..c2d2d7c 100644 (file)
@@ -426,6 +426,7 @@ extern signed long schedule_timeout(signed long timeout);
 extern signed long schedule_timeout_interruptible(signed long timeout);
 extern signed long schedule_timeout_killable(signed long timeout);
 extern signed long schedule_timeout_uninterruptible(signed long timeout);
+extern signed long schedule_timeout_idle(signed long timeout);
 asmlinkage void schedule(void);
 extern void schedule_preempt_disabled(void);
 
@@ -511,6 +512,8 @@ static inline int get_dumpable(struct mm_struct *mm)
 #define MMF_HAS_UPROBES                19      /* has uprobes */
 #define MMF_RECALC_UPROBES     20      /* MMF_HAS_UPROBES can be wrong */
 
+#define MMF_OOM_KILLED         21      /* OOM killer has chosen this mm */
+
 #define MMF_INIT_MASK          (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK)
 
 struct sighand_struct {
@@ -1848,6 +1851,9 @@ struct task_struct {
        unsigned long   task_state_change;
 #endif
        int pagefault_disabled;
+#ifdef CONFIG_MMU
+       struct list_head oom_reaper_list;
+#endif
 /* CPU-specific state of this task */
        struct thread_struct thread;
 /*
@@ -2870,10 +2876,18 @@ static inline unsigned long stack_not_used(struct task_struct *p)
        unsigned long *n = end_of_stack(p);
 
        do {    /* Skip over canary */
+# ifdef CONFIG_STACK_GROWSUP
+               n--;
+# else
                n++;
+# endif
        } while (!*n);
 
+# ifdef CONFIG_STACK_GROWSUP
+       return (unsigned long)end_of_stack(p) - (unsigned long)n;
+# else
        return (unsigned long)n - (unsigned long)end_of_stack(p);
+# endif
 }
 #endif
 extern void set_task_stack_end_magic(struct task_struct *tsk);