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  }