Source file
src/runtime/runtime_mmap_test.go
1
2
3
4
5
6
7 package runtime_test
8
9 import (
10 "runtime"
11 "testing"
12 "unsafe"
13 )
14
15
16
17
18 func TestMmapErrorSign(t *testing.T) {
19 p, err := runtime.Mmap(nil, ^uintptr(0)&^(runtime.GetPhysPageSize()-1), 0, runtime.MAP_ANON|runtime.MAP_PRIVATE, -1, 0)
20
21 if p != nil || err != runtime.ENOMEM {
22 t.Errorf("mmap = %v, %v, want nil, %v", p, err, runtime.ENOMEM)
23 }
24 }
25
26 func TestPhysPageSize(t *testing.T) {
27
28
29 ps := runtime.GetPhysPageSize()
30
31
32 b, err := runtime.Mmap(nil, 2*ps, 0, runtime.MAP_ANON|runtime.MAP_PRIVATE, -1, 0)
33 if err != 0 {
34 t.Fatalf("Mmap: %v", err)
35 }
36
37 if runtime.GOOS == "aix" {
38
39 runtime.Munmap(unsafe.Pointer(uintptr(b)), 2*ps)
40 }
41
42
43 _, err = runtime.Mmap(unsafe.Pointer(uintptr(b)+ps/2), ps, 0, runtime.MAP_ANON|runtime.MAP_PRIVATE|runtime.MAP_FIXED, -1, 0)
44 if err == 0 {
45 t.Errorf("Mmap should have failed with half-page alignment %d, but succeeded: %v", ps/2, err)
46 }
47
48
49 _, err = runtime.Mmap(unsafe.Pointer(uintptr(b)+ps), ps, 0, runtime.MAP_ANON|runtime.MAP_PRIVATE|runtime.MAP_FIXED, -1, 0)
50 if err != 0 {
51 t.Errorf("Mmap at full-page alignment %d failed: %v", ps, err)
52 }
53 }
54
View as plain text