diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-05-12 09:36:18 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-05-12 09:36:18 +0200 |
commit | 9cb5baba5e3acba0994ad899ee908799104c9965 (patch) | |
tree | d5ff16000256a0bf56279926e6114b4603ede2b4 /include/linux/mm.h | |
parent | 7142d17e8f935fa842e9f6eece2281b6d41625d6 (diff) | |
parent | 693d92a1bbc9e42681c42ed190bd42b636ca876f (diff) | |
download | kernel_samsung_smdk4412-9cb5baba5e3acba0994ad899ee908799104c9965.zip kernel_samsung_smdk4412-9cb5baba5e3acba0994ad899ee908799104c9965.tar.gz kernel_samsung_smdk4412-9cb5baba5e3acba0994ad899ee908799104c9965.tar.bz2 |
Merge commit 'v2.6.39-rc7' into sched/core
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r-- | include/linux/mm.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 692dbae..6507dde 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -137,7 +137,8 @@ extern unsigned int kobjsize(const void *objp); #define VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ) /* - * special vmas that are non-mergable, non-mlock()able + * Special vmas that are non-mergable, non-mlock()able. + * Note: mm/huge_memory.c VM_NO_THP depends on this definition. */ #define VM_SPECIAL (VM_IO | VM_DONTEXPAND | VM_RESERVED | VM_PFNMAP) @@ -1010,11 +1011,33 @@ int set_page_dirty_lock(struct page *page); int clear_page_dirty_for_io(struct page *page); /* Is the vma a continuation of the stack vma above it? */ -static inline int vma_stack_continue(struct vm_area_struct *vma, unsigned long addr) +static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr) { return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN); } +static inline int stack_guard_page_start(struct vm_area_struct *vma, + unsigned long addr) +{ + return (vma->vm_flags & VM_GROWSDOWN) && + (vma->vm_start == addr) && + !vma_growsdown(vma->vm_prev, addr); +} + +/* Is the vma a continuation of the stack vma below it? */ +static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr) +{ + return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP); +} + +static inline int stack_guard_page_end(struct vm_area_struct *vma, + unsigned long addr) +{ + return (vma->vm_flags & VM_GROWSUP) && + (vma->vm_end == addr) && + !vma_growsup(vma->vm_next, addr); +} + extern unsigned long move_page_tables(struct vm_area_struct *vma, unsigned long old_addr, struct vm_area_struct *new_vma, unsigned long new_addr, unsigned long len); |