| // Copyright 2025 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build unix |
| |
| package scan_test |
| |
| import ( |
| "internal/runtime/gc" |
| "syscall" |
| "testing" |
| "unsafe" |
| ) |
| |
| func makeMem(t testing.TB, nPages int) ([]uintptr, func()) { |
| mem, err := syscall.Mmap(-1, 0, int(gc.PageSize*nPages), syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_PRIVATE|syscall.MAP_ANON) |
| if err != nil { |
| t.Fatalf("mmap failed: %s", err) |
| } |
| free := func() { |
| syscall.Munmap(mem) |
| } |
| return unsafe.Slice((*uintptr)(unsafe.Pointer(unsafe.SliceData(mem))), len(mem)/8), free |
| } |