github.com/Ptt-official-app/go-bbs@v0.12.0/cache/mmap_unix.go (about) 1 // +build linux unix darwin 2 3 package cache 4 5 import ( 6 "fmt" 7 8 syscall "golang.org/x/sys/unix" 9 ) 10 11 func openMmap(fd int, size int) ([]byte, error) { 12 b, err := syscall.Mmap(fd, 0, size, syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED) 13 if err != nil { 14 return nil, fmt.Errorf("mmap error: %w", err) 15 } 16 return b, err 17 18 } 19 20 func closeMmap(buf []byte) error { 21 return syscall.Munmap(buf) 22 }