@@ -13,14 +13,50 @@ import (
13
13
)
14
14
15
15
func TestMremap (t * testing.T ) {
16
+ b , err := unix .Mmap (- 1 , 0 , unix .Getpagesize ()* 2 , unix .PROT_NONE , unix .MAP_ANON | unix .MAP_PRIVATE )
17
+ if err != nil {
18
+ t .Fatalf ("Mmap: %v" , err )
19
+ }
20
+ if err := unix .Mprotect (b , unix .PROT_READ | unix .PROT_WRITE ); err != nil {
21
+ t .Fatalf ("Mprotect: %v" , err )
22
+ }
23
+
24
+ b [0 ] = 42
25
+ if err := unix .Msync (b , unix .MS_SYNC ); err != nil {
26
+ t .Fatalf ("Msync: %v" , err )
27
+ }
28
+
29
+ bNew , err := unix .Mmap (- 1 , int64 (unix .Getpagesize ()* 4 ), unix .Getpagesize (), unix .PROT_NONE , unix .MAP_ANON | unix .MAP_PRIVATE )
30
+ if err != nil {
31
+ t .Fatalf ("Mmap: %v" , err )
32
+ }
16
33
34
+ bRemapped , err := unix .Mremap (b , bNew , 0 )
35
+ if err != nil {
36
+ t .Fatalf ("Mremap: %v" , err )
37
+ }
38
+ if & bRemapped [0 ] != & bNew [0 ] {
39
+ t .Fatal ("bNew and bRemapped start at different pointers" )
40
+ }
41
+ if bRemapped [0 ] != 42 {
42
+ t .Fatal ("first element wasn't mapped" )
43
+ }
44
+ if len (bNew ) != len (bRemapped ) {
45
+ t .Fatal ("bNew len doesn't equal bRemapped len" )
46
+ }
47
+ if cap (bNew ) != cap (bRemapped ) {
48
+ t .Fatal ("bNew cap doesn't equal bRemapped len" )
49
+ }
17
50
}
18
51
19
52
func TestMremap2 (t * testing.T ) {
20
53
b , err := unix .Mmap (- 1 , 0 , unix .Getpagesize ()* 2 , unix .PROT_NONE , unix .MAP_ANON | unix .MAP_PRIVATE )
21
54
if err != nil {
22
55
t .Fatalf ("Mmap: %v" , err )
23
56
}
57
+ if err := unix .Mprotect (b , unix .PROT_READ | unix .PROT_WRITE ); err != nil {
58
+ t .Fatalf ("Mprotect: %v" , err )
59
+ }
24
60
25
61
b [0 ] = 42
26
62
if err := unix .Msync (b , unix .MS_SYNC ); err != nil {
@@ -36,6 +72,9 @@ func TestMremap2(t *testing.T) {
36
72
t .Fatal ("first element value was changed" )
37
73
}
38
74
if len (bNew ) != unix .Getpagesize () {
39
- t .Fatal ("first " )
75
+ t .Fatal ("new memory len not equal to specified len" )
76
+ }
77
+ if cap (bNew ) != unix .Getpagesize () {
78
+ t .Fatal ("new memory cap not equal to specified len" )
40
79
}
41
80
}
0 commit comments