mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Add Linux support for POSIX sys ipc, mman, time, utsname.
This commit is contained in:
@@ -36,7 +36,7 @@ IPC_Flag_Bits :: enum c.int {
|
|||||||
}
|
}
|
||||||
IPC_Flags :: bit_set[IPC_Flag_Bits; c.int]
|
IPC_Flags :: bit_set[IPC_Flag_Bits; c.int]
|
||||||
|
|
||||||
when ODIN_OS == .Darwin {
|
when ODIN_OS == .Darwin || ODIN_OS == .Linux {
|
||||||
|
|
||||||
key_t :: distinct c.int32_t
|
key_t :: distinct c.int32_t
|
||||||
|
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ when ODIN_OS == .NetBSD {
|
|||||||
@(private) LMSYNC :: "msync"
|
@(private) LMSYNC :: "msync"
|
||||||
}
|
}
|
||||||
|
|
||||||
when ODIN_OS == .Darwin || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
when ODIN_OS == .Darwin || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux {
|
||||||
|
|
||||||
PROT_EXEC :: 0x04
|
PROT_EXEC :: 0x04
|
||||||
_PROT_NONE :: 0x00
|
_PROT_NONE :: 0x00
|
||||||
@@ -174,7 +174,7 @@ when ODIN_OS == .Darwin || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
|||||||
MAP_PRIVATE :: 0x0002
|
MAP_PRIVATE :: 0x0002
|
||||||
MAP_SHARED :: 0x0001
|
MAP_SHARED :: 0x0001
|
||||||
|
|
||||||
when ODIN_OS == .Darwin {
|
when ODIN_OS == .Darwin || ODIN_OS == .Linux {
|
||||||
MS_INVALIDATE :: 0x0002
|
MS_INVALIDATE :: 0x0002
|
||||||
_MS_SYNC :: 0x0010
|
_MS_SYNC :: 0x0010
|
||||||
} else when ODIN_OS == .NetBSD {
|
} else when ODIN_OS == .NetBSD {
|
||||||
@@ -184,13 +184,18 @@ when ODIN_OS == .Darwin || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
|||||||
MS_INVALIDATE :: 0x0004
|
MS_INVALIDATE :: 0x0004
|
||||||
_MS_SYNC :: 0x0002
|
_MS_SYNC :: 0x0002
|
||||||
}
|
}
|
||||||
|
|
||||||
MS_ASYNC :: 0x0001
|
MS_ASYNC :: 0x0001
|
||||||
MS_SYNC :: Sync_Flags{Sync_Flags_Bits(log2(_MS_SYNC))}
|
MS_SYNC :: Sync_Flags{Sync_Flags_Bits(log2(_MS_SYNC))}
|
||||||
|
|
||||||
MCL_CURRENT :: 0x0001
|
MCL_CURRENT :: 0x0001
|
||||||
MCL_FUTURE :: 0x0002
|
MCL_FUTURE :: 0x0002
|
||||||
|
|
||||||
MAP_FAILED :: rawptr(~uintptr(0))
|
when ODIN_OS == .Linux {
|
||||||
|
MAP_FAILED :: rawptr(~uintptr(-1))
|
||||||
|
} else {
|
||||||
|
MAP_FAILED :: rawptr(~uintptr(0))
|
||||||
|
}
|
||||||
|
|
||||||
POSIX_MADV_DONTNEED :: 4
|
POSIX_MADV_DONTNEED :: 4
|
||||||
POSIX_MADV_NORMAL :: 0
|
POSIX_MADV_NORMAL :: 0
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ when ODIN_OS == .NetBSD {
|
|||||||
@(private) LUTIMES :: "utimes"
|
@(private) LUTIMES :: "utimes"
|
||||||
}
|
}
|
||||||
|
|
||||||
when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux {
|
||||||
|
|
||||||
itimerval :: struct {
|
itimerval :: struct {
|
||||||
it_interval: timeval, /* [PSX] timer interval */
|
it_interval: timeval, /* [PSX] timer interval */
|
||||||
|
|||||||
@@ -37,10 +37,15 @@ foreign lib {
|
|||||||
uname :: proc(uname: ^utsname) -> c.int ---
|
uname :: proc(uname: ^utsname) -> c.int ---
|
||||||
}
|
}
|
||||||
|
|
||||||
when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux {
|
||||||
|
|
||||||
@(private)
|
when ODIN_OS == .Linux {
|
||||||
_SYS_NAMELEN :: 256
|
@(private)
|
||||||
|
_SYS_NAMELEN :: 65
|
||||||
|
} else {
|
||||||
|
@(private)
|
||||||
|
_SYS_NAMELEN :: 256
|
||||||
|
}
|
||||||
|
|
||||||
utsname :: struct {
|
utsname :: struct {
|
||||||
sysname: [_SYS_NAMELEN]c.char `fmt:"s,0"`, /* [PSX] name of OS */
|
sysname: [_SYS_NAMELEN]c.char `fmt:"s,0"`, /* [PSX] name of OS */
|
||||||
|
|||||||
Reference in New Issue
Block a user