2002-10-16 18:36:42

by Matthew Wilcox

[permalink] [raw]
Subject: [PATCH] default VM flags for upwards-growing stacks


diff -urpNX build-tools/dontdiff linus-2.5/include/linux/mm.h parisc-2.5/include/linux/mm.h
--- linus-2.5/include/linux/mm.h Tue Oct 8 10:54:13 2002
+++ parisc-2.5/include/linux/mm.h Tue Oct 8 16:49:15 2002
@@ -106,7 +106,11 @@ struct vm_area_struct {
#define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */
#define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */

-#define VM_STACK_FLAGS (0x00000100 | VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT)
+#ifdef ARCH_STACK_GROWSUP
+#define VM_STACK_FLAGS (VM_GROWSUP | VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT)
+#else
+#define VM_STACK_FLAGS (VM_GROWSDOWN | VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT)
+#endif

#define VM_READHINTMASK (VM_SEQ_READ | VM_RAND_READ)
#define VM_ClearReadHint(v) (v)->vm_flags &= ~VM_READHINTMASK

--
Revolutions do not require corporate support.


2002-10-16 18:50:21

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH] default VM flags for upwards-growing stacks

Matthew Wilcox wrote:
> diff -urpNX build-tools/dontdiff linus-2.5/include/linux/mm.h parisc-2.5/include/linux/mm.h
> --- linus-2.5/include/linux/mm.h Tue Oct 8 10:54:13 2002
> +++ parisc-2.5/include/linux/mm.h Tue Oct 8 16:49:15 2002
> @@ -106,7 +106,11 @@ struct vm_area_struct {
> #define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */
> #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
>
> -#define VM_STACK_FLAGS (0x00000100 | VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT)
> +#ifdef ARCH_STACK_GROWSUP
> +#define VM_STACK_FLAGS (VM_GROWSUP | VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT)
> +#else
> +#define VM_STACK_FLAGS (VM_GROWSDOWN | VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT)
> +#endif


is it worth it to crease a VM_GROW_DIR define instead?

then there is no ifdef in linux/mm.h, just an arch-dependent define.