1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-01 19:18:28 -04:00
Files
DankMaterialShell/core/internal/wayland/shm/fd_freebsd.go
T
bbedward 90291bd627 freebsd: add initial support for running on FreeBSD, excluding Bluez,
ppd, and some things. Add a simple wpa_supplicant backend
2026-07-19 10:31:48 -04:00

29 lines
717 B
Go

package shm
import (
"unsafe"
"golang.org/x/sys/unix"
)
// Mirrors FreeBSD libc memfd_create (lib/libc/gen/memfd_create.c):
// shm_open2(SHM_ANON, O_RDWR, 0, SHM_GROW_ON_WRITE, name).
// x/sys/unix has no wrapper for SYS_shm_open2 (571, sys/sys/syscall.h).
const (
sysShmOpen2 = 571
shmAnon = 1 // SHM_ANON ((char *)1), sys/sys/mman.h
shmGrowOnWrite = 0x2 // SHM_GROW_ON_WRITE, sys/sys/mman.h
)
func CreateAnonFd(name string) (int, error) {
p, err := unix.BytePtrFromString(name)
if err != nil {
return -1, err
}
fd, _, errno := unix.Syscall6(sysShmOpen2, shmAnon, unix.O_RDWR, 0, shmGrowOnWrite, uintptr(unsafe.Pointer(p)), 0)
if errno != 0 {
return -1, errno
}
return int(fd), nil
}