mirror of
https://github.com/golang/sys.git
synced 2026-02-08 19:56:04 +03:00
unix: fix MmapPtr test failing on OpenBSD
OpenBSD apparently doesn't allow unmapping address space if part of the region is already unmapped. This tweaks the test so that munmapping twice no longer happens. Cq-Include-Trybots: luci.golang.try:gotip-openbsd-amd64
This commit is contained in:
@@ -9,7 +9,6 @@ package unix_test
|
||||
import (
|
||||
"runtime"
|
||||
"testing"
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
@@ -52,23 +51,20 @@ func TestMmap(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMmapPtr(t *testing.T) {
|
||||
mmapProt := unix.PROT_NONE
|
||||
mmapPtrProt := unix.PROT_READ | unix.PROT_WRITE
|
||||
b, err := unix.Mmap(-1, 0, 2*unix.Getpagesize(), mmapProt, unix.MAP_ANON|unix.MAP_PRIVATE)
|
||||
p, err := unix.MmapPtr(-1, 0, nil, uintptr(2*unix.Getpagesize()),
|
||||
unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE)
|
||||
if err != nil {
|
||||
t.Fatalf("Mmap: %v", err)
|
||||
}
|
||||
if _, err := unix.MmapPtr(-1, 0, unsafe.Pointer(&b[0]), uintptr(unix.Getpagesize()),
|
||||
mmapPtrProt, unix.MAP_ANON|unix.MAP_PRIVATE|unix.MAP_FIXED); err != nil {
|
||||
t.Fatalf("MmapPtr: %v", err)
|
||||
}
|
||||
|
||||
b[0] = 42
|
||||
if _, err := unix.MmapPtr(-1, 0, p, uintptr(unix.Getpagesize()),
|
||||
unix.PROT_READ|unix.PROT_WRITE, unix.MAP_ANON|unix.MAP_PRIVATE|unix.MAP_FIXED); err != nil {
|
||||
t.Fatalf("MmapPtr: %v", err)
|
||||
}
|
||||
|
||||
if err := unix.MunmapPtr(unsafe.Pointer(&b[0]), uintptr(unix.Getpagesize())); err != nil {
|
||||
*(*byte)(p) = 42
|
||||
|
||||
if err := unix.MunmapPtr(p, uintptr(2*unix.Getpagesize())); err != nil {
|
||||
t.Fatalf("MunmapPtr: %v", err)
|
||||
}
|
||||
if err := unix.Munmap(b); err != nil {
|
||||
t.Fatalf("Munmap: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user