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  }