package shm
import "base:intrinsics"
import "core:sys/linux"
// TODO: These should be in their own package.
IPC_RMID :: 0x0
IPC_PRIVATE :: 0x0
S_IRUSR :: 0x00000100
S_IWUSR :: 0x00000080
S_IRGRP :: 0x00000020
S_IWGRP :: 0x00000010
S_IROTH :: 0x00000004
S_IWOTH :: 0x00000002
IPC_CREAT :: 0x00000200
IPC_EXCL :: 0x00000400
TS_NP :: 0x00010000
RESIZE_NP :: 0x00040000
MAP_FIXED_NP :: 0x00100000
foreign import shm "system:c"
@(default_calling_convention = "c")
@(link_prefix = "shm")
foreign shm {
at :: proc(shm_id: i32, shm_addr: rawptr, shm_flag: i32) -> rawptr ---
ctl :: proc(shm_id: i32, cmd: i32, buf: rawptr) -> i32 ---
dt :: proc(shm_addr: rawptr) -> i32 ---
//get :: proc(key: u32, size: u32, shm_flag: i32) -> i32 ---
}
get :: proc(key: u32, size: u32, shm_flag: i32) -> i32 {
return i32(intrinsics.syscall(linux.SYS_shmget, uintptr(key), uintptr(size), uintptr(shm_flag)))
}