github.com/Ptt-official-app/go-bbs@v0.12.0/cache/systemvshm_unix.go (about) 1 // +build !windows 2 3 package cache 4 5 import ( 6 "unsafe" 7 8 syscall "golang.org/x/sys/unix" 9 ) 10 11 func shmget(key int, size int, flag int) (int, error) { 12 r1, _, err := syscall.Syscall(syscall.SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag)) 13 if err != 0 { 14 return 0, err 15 } 16 return int(r1), nil 17 } 18 19 func shmat(shmid int, shmaddr uintptr, shmflg int) (uintptr, error) { 20 r1, _, err := syscall.Syscall(syscall.SYS_SHMAT, uintptr(shmid), uintptr(unsafe.Pointer(shmaddr)), uintptr(shmflg)) 21 if err != 0 { 22 return 0, err 23 } 24 // XXX 25 26 return r1, nil 27 } 28 29 func shmdt(shmaddr uintptr) (int, error) { 30 r1, _, err := syscall.Syscall(syscall.SYS_SHMDT, shmaddr, uintptr(0), uintptr(0)) 31 if err != 0 { 32 return int(r1), err 33 } 34 // XXX 35 36 return int(r1), nil 37 } 38 39 func shmctl(shmid int, cmd int, buf *ShmidDs) (int, error) { 40 r1, _, err := syscall.Syscall(syscall.SYS_SHMCTL, uintptr(shmid), uintptr(cmd), uintptr(unsafe.Pointer(buf))) 41 if err != 0 { 42 return int(r1), err 43 } 44 // XXX 45 return int(r1), nil 46 }