diff options
-rw-r--r-- | include/asm-alpha/mman.h | 2 | ||||
-rw-r--r-- | include/asm-arm/mman.h | 2 | ||||
-rw-r--r-- | include/asm-arm26/mman.h | 2 | ||||
-rw-r--r-- | include/asm-cris/mman.h | 2 | ||||
-rw-r--r-- | include/asm-frv/mman.h | 2 | ||||
-rw-r--r-- | include/asm-h8300/mman.h | 2 | ||||
-rw-r--r-- | include/asm-i386/mman.h | 2 | ||||
-rw-r--r-- | include/asm-ia64/mman.h | 2 | ||||
-rw-r--r-- | include/asm-m32r/mman.h | 2 | ||||
-rw-r--r-- | include/asm-m68k/mman.h | 2 | ||||
-rw-r--r-- | include/asm-mips/mman.h | 2 | ||||
-rw-r--r-- | include/asm-parisc/mman.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/mman.h | 2 | ||||
-rw-r--r-- | include/asm-s390/mman.h | 2 | ||||
-rw-r--r-- | include/asm-sh/mman.h | 2 | ||||
-rw-r--r-- | include/asm-sparc/mman.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/mman.h | 2 | ||||
-rw-r--r-- | include/asm-v850/mman.h | 2 | ||||
-rw-r--r-- | include/asm-x86_64/mman.h | 2 | ||||
-rw-r--r-- | include/asm-xtensa/mman.h | 2 | ||||
-rw-r--r-- | mm/madvise.c | 21 |
21 files changed, 57 insertions, 4 deletions
diff --git a/include/asm-alpha/mman.h b/include/asm-alpha/mman.h index f6439532a2..a21515c16a 100644 --- a/include/asm-alpha/mman.h +++ b/include/asm-alpha/mman.h | |||
@@ -43,6 +43,8 @@ | |||
43 | #define MADV_SPACEAVAIL 5 /* ensure resources are available */ | 43 | #define MADV_SPACEAVAIL 5 /* ensure resources are available */ |
44 | #define MADV_DONTNEED 6 /* don't need these pages */ | 44 | #define MADV_DONTNEED 6 /* don't need these pages */ |
45 | #define MADV_REMOVE 7 /* remove these pages & resources */ | 45 | #define MADV_REMOVE 7 /* remove these pages & resources */ |
46 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
47 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
46 | 48 | ||
47 | /* compatibility flags */ | 49 | /* compatibility flags */ |
48 | #define MAP_ANON MAP_ANONYMOUS | 50 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-arm/mman.h b/include/asm-arm/mman.h index f0bebca2ac..693ed859e6 100644 --- a/include/asm-arm/mman.h +++ b/include/asm-arm/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-arm26/mman.h b/include/asm-arm26/mman.h index 0ed7780541..2096c50df8 100644 --- a/include/asm-arm26/mman.h +++ b/include/asm-arm26/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-cris/mman.h b/include/asm-cris/mman.h index 5a382b8bf3..deddfb239f 100644 --- a/include/asm-cris/mman.h +++ b/include/asm-cris/mman.h | |||
@@ -38,6 +38,8 @@ | |||
38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
39 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 39 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
40 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 40 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
41 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
42 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
41 | 43 | ||
42 | /* compatibility flags */ | 44 | /* compatibility flags */ |
43 | #define MAP_ANON MAP_ANONYMOUS | 45 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-frv/mman.h b/include/asm-frv/mman.h index 8af4a41c25..d3bca306da 100644 --- a/include/asm-frv/mman.h +++ b/include/asm-frv/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-h8300/mman.h b/include/asm-h8300/mman.h index 744a8fb485..ac0346f7d1 100644 --- a/include/asm-h8300/mman.h +++ b/include/asm-h8300/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-i386/mman.h b/include/asm-i386/mman.h index ba4941e6f6..ab2339a1d8 100644 --- a/include/asm-i386/mman.h +++ b/include/asm-i386/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-ia64/mman.h b/include/asm-ia64/mman.h index 828beb24a2..357ebb780c 100644 --- a/include/asm-ia64/mman.h +++ b/include/asm-ia64/mman.h | |||
@@ -44,6 +44,8 @@ | |||
44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
45 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 45 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
46 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 46 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
47 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
48 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
47 | 49 | ||
48 | /* compatibility flags */ | 50 | /* compatibility flags */ |
49 | #define MAP_ANON MAP_ANONYMOUS | 51 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-m32r/mman.h b/include/asm-m32r/mman.h index 12e29747bc..6b02fe3fcf 100644 --- a/include/asm-m32r/mman.h +++ b/include/asm-m32r/mman.h | |||
@@ -38,6 +38,8 @@ | |||
38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
39 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 39 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
40 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 40 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
41 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
42 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
41 | 43 | ||
42 | /* compatibility flags */ | 44 | /* compatibility flags */ |
43 | #define MAP_ANON MAP_ANONYMOUS | 45 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-m68k/mman.h b/include/asm-m68k/mman.h index ea262ab88b..efd12bc4cc 100644 --- a/include/asm-m68k/mman.h +++ b/include/asm-m68k/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-mips/mman.h b/include/asm-mips/mman.h index dd17c8bd62..6d01e26830 100644 --- a/include/asm-mips/mman.h +++ b/include/asm-mips/mman.h | |||
@@ -66,6 +66,8 @@ | |||
66 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 66 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
67 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 67 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
68 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 68 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
69 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
70 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
69 | 71 | ||
70 | /* compatibility flags */ | 72 | /* compatibility flags */ |
71 | #define MAP_ANON MAP_ANONYMOUS | 73 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-parisc/mman.h b/include/asm-parisc/mman.h index 736b0abcac..a381cf5c8f 100644 --- a/include/asm-parisc/mman.h +++ b/include/asm-parisc/mman.h | |||
@@ -49,6 +49,8 @@ | |||
49 | #define MADV_4M_PAGES 22 /* Use 4 Megabyte pages */ | 49 | #define MADV_4M_PAGES 22 /* Use 4 Megabyte pages */ |
50 | #define MADV_16M_PAGES 24 /* Use 16 Megabyte pages */ | 50 | #define MADV_16M_PAGES 24 /* Use 16 Megabyte pages */ |
51 | #define MADV_64M_PAGES 26 /* Use 64 Megabyte pages */ | 51 | #define MADV_64M_PAGES 26 /* Use 64 Megabyte pages */ |
52 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
53 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
52 | 54 | ||
53 | /* compatibility flags */ | 55 | /* compatibility flags */ |
54 | #define MAP_ANON MAP_ANONYMOUS | 56 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-powerpc/mman.h b/include/asm-powerpc/mman.h index a2e34c21b4..fcff25d13f 100644 --- a/include/asm-powerpc/mman.h +++ b/include/asm-powerpc/mman.h | |||
@@ -45,6 +45,8 @@ | |||
45 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 45 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
46 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 46 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
47 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 47 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
48 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
49 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
48 | 50 | ||
49 | /* compatibility flags */ | 51 | /* compatibility flags */ |
50 | #define MAP_ANON MAP_ANONYMOUS | 52 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-s390/mman.h b/include/asm-s390/mman.h index c8d5409b5d..d41ca14770 100644 --- a/include/asm-s390/mman.h +++ b/include/asm-s390/mman.h | |||
@@ -44,6 +44,8 @@ | |||
44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
45 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 45 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
46 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 46 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
47 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
48 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
47 | 49 | ||
48 | /* compatibility flags */ | 50 | /* compatibility flags */ |
49 | #define MAP_ANON MAP_ANONYMOUS | 51 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-sh/mman.h b/include/asm-sh/mman.h index 693bd55a37..0e08d0573a 100644 --- a/include/asm-sh/mman.h +++ b/include/asm-sh/mman.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
39 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
40 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
39 | 41 | ||
40 | /* compatibility flags */ | 42 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-sparc/mman.h b/include/asm-sparc/mman.h index 98435ad861..4a298b2be8 100644 --- a/include/asm-sparc/mman.h +++ b/include/asm-sparc/mman.h | |||
@@ -55,6 +55,8 @@ | |||
55 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 55 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ | 56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ |
57 | #define MADV_REMOVE 0x6 /* remove these pages & resources */ | 57 | #define MADV_REMOVE 0x6 /* remove these pages & resources */ |
58 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
59 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
58 | 60 | ||
59 | /* compatibility flags */ | 61 | /* compatibility flags */ |
60 | #define MAP_ANON MAP_ANONYMOUS | 62 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-sparc64/mman.h b/include/asm-sparc64/mman.h index cb4b615619..d705ec92da 100644 --- a/include/asm-sparc64/mman.h +++ b/include/asm-sparc64/mman.h | |||
@@ -55,6 +55,8 @@ | |||
55 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 55 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ | 56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ |
57 | #define MADV_REMOVE 0x6 /* remove these pages & resources */ | 57 | #define MADV_REMOVE 0x6 /* remove these pages & resources */ |
58 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
59 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
58 | 60 | ||
59 | /* compatibility flags */ | 61 | /* compatibility flags */ |
60 | #define MAP_ANON MAP_ANONYMOUS | 62 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-v850/mman.h b/include/asm-v850/mman.h index edc7996519..7b851c310e 100644 --- a/include/asm-v850/mman.h +++ b/include/asm-v850/mman.h | |||
@@ -33,6 +33,8 @@ | |||
33 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 33 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
34 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 34 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
35 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 35 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
36 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
37 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
36 | 38 | ||
37 | /* compatibility flags */ | 39 | /* compatibility flags */ |
38 | #define MAP_ANON MAP_ANONYMOUS | 40 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-x86_64/mman.h b/include/asm-x86_64/mman.h index d0e97b74f7..b699a38c1c 100644 --- a/include/asm-x86_64/mman.h +++ b/include/asm-x86_64/mman.h | |||
@@ -37,6 +37,8 @@ | |||
37 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 37 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
38 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 38 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
39 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 39 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
40 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
41 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
40 | 42 | ||
41 | /* compatibility flags */ | 43 | /* compatibility flags */ |
42 | #define MAP_ANON MAP_ANONYMOUS | 44 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-xtensa/mman.h b/include/asm-xtensa/mman.h index 082a750492..e2d7afb679 100644 --- a/include/asm-xtensa/mman.h +++ b/include/asm-xtensa/mman.h | |||
@@ -73,6 +73,8 @@ | |||
73 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 73 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
74 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 74 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
75 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | 75 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ |
76 | #define MADV_DONTFORK 0x30 /* dont inherit across fork */ | ||
77 | #define MADV_DOFORK 0x31 /* do inherit across fork */ | ||
76 | 78 | ||
77 | /* compatibility flags */ | 79 | /* compatibility flags */ |
78 | #define MAP_ANON MAP_ANONYMOUS | 80 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/mm/madvise.c b/mm/madvise.c index ae0ae3ea29..af3d573b01 100644 --- a/mm/madvise.c +++ b/mm/madvise.c | |||
@@ -22,16 +22,23 @@ static long madvise_behavior(struct vm_area_struct * vma, | |||
22 | struct mm_struct * mm = vma->vm_mm; | 22 | struct mm_struct * mm = vma->vm_mm; |
23 | int error = 0; | 23 | int error = 0; |
24 | pgoff_t pgoff; | 24 | pgoff_t pgoff; |
25 | int new_flags = vma->vm_flags & ~VM_READHINTMASK; | 25 | int new_flags = vma->vm_flags; |
26 | 26 | ||
27 | switch (behavior) { | 27 | switch (behavior) { |
28 | case MADV_NORMAL: | ||
29 | new_flags = new_flags & ~VM_RAND_READ & ~VM_SEQ_READ; | ||
30 | break; | ||
28 | case MADV_SEQUENTIAL: | 31 | case MADV_SEQUENTIAL: |
29 | new_flags |= VM_SEQ_READ; | 32 | new_flags = (new_flags & ~VM_RAND_READ) | VM_SEQ_READ; |
30 | break; | 33 | break; |
31 | case MADV_RANDOM: | 34 | case MADV_RANDOM: |
32 | new_flags |= VM_RAND_READ; | 35 | new_flags = (new_flags & ~VM_SEQ_READ) | VM_RAND_READ; |
33 | break; | 36 | break; |
34 | default: | 37 | case MADV_DONTFORK: |
38 | new_flags |= VM_DONTCOPY; | ||
39 | break; | ||
40 | case MADV_DOFORK: | ||
41 | new_flags &= ~VM_DONTCOPY; | ||
35 | break; | 42 | break; |
36 | } | 43 | } |
37 | 44 | ||
@@ -177,6 +184,12 @@ madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev, | |||
177 | long error; | 184 | long error; |
178 | 185 | ||
179 | switch (behavior) { | 186 | switch (behavior) { |
187 | case MADV_DOFORK: | ||
188 | if (vma->vm_flags & VM_IO) { | ||
189 | error = -EINVAL; | ||
190 | break; | ||
191 | } | ||
192 | case MADV_DONTFORK: | ||
180 | case MADV_NORMAL: | 193 | case MADV_NORMAL: |
181 | case MADV_SEQUENTIAL: | 194 | case MADV_SEQUENTIAL: |
182 | case MADV_RANDOM: | 195 | case MADV_RANDOM: |