github.com/euank/go@v0.0.0-20160829210321-495514729181/src/runtime/runtime_mmap_test.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris 6 7 package runtime_test 8 9 import ( 10 "runtime" 11 "runtime/internal/sys" 12 "testing" 13 ) 14 15 // Test that the error value returned by mmap is positive, as that is 16 // what the code in mem_bsd.go, mem_darwin.go, and mem_linux.go expects. 17 // See the uses of ENOMEM in sysMap in those files. 18 func TestMmapErrorSign(t *testing.T) { 19 p := runtime.Mmap(nil, ^uintptr(0)&^(sys.PhysPageSize-1), 0, runtime.MAP_ANON|runtime.MAP_PRIVATE, -1, 0) 20 21 // The runtime.mmap function is nosplit, but t.Errorf is not. 22 // Reset the pointer so that we don't get an "invalid stack 23 // pointer" error from t.Errorf if we call it. 24 v := uintptr(p) 25 p = nil 26 27 if v != runtime.ENOMEM { 28 t.Errorf("mmap = %v, want %v", v, runtime.ENOMEM) 29 } 30 }