mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-19 13:00:28 +00:00
Merge pull request #5403 from flysand7/shmget-interface
sys/linux: Unify IPC_Flags and IPC_Mode bitsets
This commit is contained in:
@@ -1618,36 +1618,39 @@ PER_HPUX :: 0x0010
|
||||
PER_MASK :: 0x00ff
|
||||
|
||||
/*
|
||||
Bits for access modes for shared memory
|
||||
Bits for SystemV IPC flags.
|
||||
|
||||
In this enum, access modes are common for any shared memory. Prefixed
|
||||
entries (i.e. `IPC_` or `SHM_`) denote flags, where `IPC_` are common flags
|
||||
for all SystemV IPC primitives, and `SHM_`, `SEM_` and `MSG_` are specific
|
||||
to shared memory segments, semaphores and message queues respectively.
|
||||
|
||||
These bits overlap, because they are meant to be used within the
|
||||
context of specific procedures. Creation flags, used for `*get` procedures,
|
||||
and usage flags used by all other IPC procedures. Do not mix creation and
|
||||
usage flags, as well as flags prefixed differently (excluding `IPC_`
|
||||
prefix).
|
||||
*/
|
||||
IPC_Mode_Bits :: enum {
|
||||
IPC_Flags_Bits :: enum {
|
||||
// Access modes for shared memory.
|
||||
WROTH = 1,
|
||||
RDOTH = 2,
|
||||
WRGRP = 4,
|
||||
RDGRP = 5,
|
||||
WRUSR = 7,
|
||||
RDUSR = 8,
|
||||
DEST = 9,
|
||||
LOCKED = 10,
|
||||
}
|
||||
|
||||
/*
|
||||
Shared memory flags bits
|
||||
*/
|
||||
IPC_Flags_Bits :: enum {
|
||||
// Creation flags for shared memory.
|
||||
IPC_CREAT = 9,
|
||||
IPC_EXCL = 10,
|
||||
IPC_NOWAIT = 11,
|
||||
// Semaphore
|
||||
SEM_UNDO = 9,
|
||||
// Shared memory
|
||||
SHM_HUGETLB = 11,
|
||||
SHM_NORESERVE = 12,
|
||||
// Usage flags for shared memory.
|
||||
IPC_NOWAIT = 11,
|
||||
SEM_UNDO = 9,
|
||||
SHM_RDONLY = 12,
|
||||
SHM_RND = 13,
|
||||
SHM_REMAP = 14,
|
||||
SHM_EXEC = 15,
|
||||
// Message queue
|
||||
MSG_NOERROR = 12,
|
||||
MSG_EXCEPT = 13,
|
||||
MSG_COPY = 14,
|
||||
|
||||
@@ -937,17 +937,12 @@ IO_Vec :: struct {
|
||||
}
|
||||
|
||||
/*
|
||||
Access mode for shared memory
|
||||
*/
|
||||
IPC_Mode :: bit_set[IPC_Mode_Bits; u32]
|
||||
|
||||
/*
|
||||
Flags used by IPC objects
|
||||
Access modes and flags used by SystemV IPC procedures.
|
||||
*/
|
||||
IPC_Flags :: bit_set[IPC_Flags_Bits; i16]
|
||||
|
||||
/*
|
||||
Permissions for IPC objects
|
||||
Permissions for SystemV IPC primitives.
|
||||
*/
|
||||
IPC_Perm :: struct {
|
||||
key: Key,
|
||||
@@ -955,7 +950,7 @@ IPC_Perm :: struct {
|
||||
gid: u32,
|
||||
cuid: u32,
|
||||
cgid: u32,
|
||||
mode: IPC_Mode,
|
||||
mode: IPC_Flags, // Only contains mode flags.
|
||||
seq: u16,
|
||||
_: [2 + 2*size_of(int)]u8,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user