github.com/nvi-inc/svipc@v0.1.0/common.go (about) 1 package svipc 2 3 import ( 4 "golang.org/x/sys/unix" 5 ) 6 7 const ( 8 SHM_R = 0400 9 SHM_W = 0200 10 11 SHM_RDONLY = 010000 12 SHM_RND = 020000 13 SHM_REMAP = 040000 14 SHM_EXEC = 0100000 15 16 SHM_LOCK = 11 17 SHM_UNLOCK = 12 18 SHM_STAT = 13 19 SHM_INFO = 14 20 SHM_DEST = 01000 21 SHM_LOCKED = 02000 22 SHM_HUGETLB = 04000 23 SHM_NORESERVE = 010000 24 25 IPC_CREAT = 01000 26 IPC_EXCL = 02000 27 IPC_NOWAIT = 04000 28 29 IPC_RMID = 0 30 IPC_SET = 1 31 IPC_STAT = 2 32 IPC_INFO = 3 33 34 SEM_UNDO = 0x1000 35 GETPID = 11 36 GETVAL = 12 37 GETALL = 13 38 GETNCNT = 14 39 GETZCNT = 15 40 SETVAL = 16 41 SETALL = 17 42 43 SEM_STAT = 18 44 SEM_INFO = 19 45 ) 46 47 func Ftok(path string, id uint64) (IpcKey, error) { 48 var st unix.Stat_t 49 err := unix.Stat(path, &st) 50 if err != nil { 51 return 0, err 52 } 53 54 return IpcKey((st.Ino & 0xffff) | ((st.Dev & 0xff) << 16) | ((id & 0xff) << 24)), nil 55 }