aboutsummaryrefslogtreecommitdiff
path: root/core/sys/linux
diff options
context:
space:
mode:
authorflysand7 <yyakut.ac@gmail.com>2023-11-04 13:57:28 +1100
committerflysand7 <yyakut.ac@gmail.com>2023-11-04 13:57:28 +1100
commitf26ed39e86061f867745bcbae4e9fad49b2116ab (patch)
tree77d8aeb44a32dd957b8e9e9045e2952176f8d6d4 /core/sys/linux
parent574d2baf094ade77b42e1b05fd2ab9b223acc63f (diff)
[sys/linux]: Fix compilation errors and -strict-style errors
Diffstat (limited to 'core/sys/linux')
-rw-r--r--core/sys/linux/bits.odin6
-rw-r--r--core/sys/linux/sys.odin55
-rw-r--r--core/sys/linux/types.odin61
3 files changed, 66 insertions, 56 deletions
diff --git a/core/sys/linux/bits.odin b/core/sys/linux/bits.odin
index fa5c31cce..fa2470c78 100644
--- a/core/sys/linux/bits.odin
+++ b/core/sys/linux/bits.odin
@@ -1629,7 +1629,7 @@ PTrace_Request :: enum {
SECCOMP_GET_METADATA = 0x420d,
GET_SYSCALL_INFO = 0x420e,
GET_RSEQ_CONFIGURATION = 0x420f,
-};
+}
/*
ptrace options
@@ -1669,7 +1669,7 @@ PTrace_Get_Syscall_Info_Op :: enum u8 {
ENTRY = 1,
EXIT = 2,
SECCOMP = 3,
-};
+}
/*
ptrace's PEEKSIGINFO flags bits
@@ -1708,7 +1708,7 @@ Splice_Flags_Bits :: enum {
/*
Clock IDs for various system clocks.
*/
-Clock_ID :: enum {
+Clock_Id :: enum {
REALTIME = 0,
MONOTONIC = 1,
PROCESS_CPUTIME_ID = 2,
diff --git a/core/sys/linux/sys.odin b/core/sys/linux/sys.odin
index ef243706d..ec27f8e4c 100644
--- a/core/sys/linux/sys.odin
+++ b/core/sys/linux/sys.odin
@@ -346,7 +346,7 @@ shmget :: proc "contextless" (key: Key, size: uint, flags: IPC_Flags) -> (Key, E
*/
shmat :: proc "contextless" (key: Key, addr: rawptr, flags: IPC_Flags) -> (rawptr, Errno) {
ret := syscall(SYS_shmat, key, addr, transmute(i16) flags)
- return errno_unwrap(ret, Key)
+ return errno_unwrap(ret, rawptr, uintptr)
}
shmctl_ds :: proc "contextless" (key: Key, cmd: IPC_Cmd, buf: ^Shmid_DS) -> (Errno) {
@@ -354,21 +354,16 @@ shmctl_ds :: proc "contextless" (key: Key, cmd: IPC_Cmd, buf: ^Shmid_DS) -> (Err
return Errno(-ret)
}
-shmctl_info :: proc "contextless" (key: Key, cmd: IPC_Cmd, buf: ^Shmid_Info) -> (int, Errno) {
+shmctl_info :: proc "contextless" (key: Key, cmd: IPC_Cmd, buf: ^Shm_Info) -> (int, Errno) {
ret := syscall(SYS_shmctl, key, cmd, buf)
return errno_unwrap(ret, int)
}
-shmctl_stat :: proc "contextless" (index: int, cmd: IPC_Cmd, buf: ^Shmid_DS) -> (Key, Errno) {
- ret := syscall(SYS_shmctl, key, cmd, buf)
- return errno_unwrap(ret, Key)
-}
-
/*
SystemV shared memory control.
Available since Linux 2.0.
*/
-shmctl :: proc {shmctl_ds, shmctl_info, shmctl_stat}
+shmctl :: proc {shmctl_ds, shmctl_info}
/*
Allocate a new file descriptor that refers to the same file as the one provided.
@@ -432,7 +427,7 @@ alarm :: proc "contextless" (seconds: u32) -> u32 {
Set the value of an internal timer.
Available since Linux 1.0.
*/
-getitimer :: proc "contextless" (which: ITimer_Which, new: ^ITimer_Val, old: ^ITimer_Val) -> (Errno) {
+setitimer :: proc "contextless" (which: ITimer_Which, new: ^ITimer_Val, old: ^ITimer_Val) -> (Errno) {
ret := syscall(SYS_getitimer, new, old)
return Errno(-ret)
}
@@ -451,13 +446,13 @@ getpid :: proc "contextless" () -> Pid {
Available since Linux 2.2.
On 32-bit platforms available since Linux 2.6.
*/
-sendfile :: proc "contextless" (out: Fd, in: Fd, offset: ^i64, count: uint) -> (int, Errno) {
+sendfile :: proc "contextless" (out_fd: Fd, in_fd: Fd, offset: ^i64, count: uint) -> (int, Errno) {
when size_of(int) == 8 {
- ret := syscall(SYS_sendfile, out, in, offset, count)
- return errno_unwrap(ret, Errno)
+ ret := syscall(SYS_sendfile, out_fd, in_fd, offset, count)
+ return errno_unwrap(ret, int)
} else {
- ret := syscall(SYS_sendfile64, out, in, offset, count)
- return errno_unwrap(ret, Errno)
+ ret := syscall(SYS_sendfile64, out_fd, in_fd, offset, count)
+ return errno_unwrap(ret, int)
}
}
@@ -829,7 +824,7 @@ semctl3 :: proc "contextless" (key: Key, semnum: i32, cmd: IPC_Cmd) -> (int, Err
return errno_unwrap(ret, int)
}
-semctl4 :: proc "contextless" (key: Key, semnum: i32, cmd: IPC_Cmd, semun: Sem_Un) -> (int, Errno) {
+semctl4 :: proc "contextless" (key: Key, semnum: i32, cmd: IPC_Cmd, semun: ^Sem_Un) -> (int, Errno) {
ret := syscall(SYS_semctl, key, semnum, cmd, semun)
return errno_unwrap(ret, int)
}
@@ -1341,9 +1336,9 @@ lchown :: proc "contextless" (name: cstring, uid: Uid, gid: Gid) -> (Errno) {
Set file mode creation mask.
Available since Linux 1.0.
*/
-umask :: proc "contextless" (mask: Mask) -> Mask {
+umask :: proc "contextless" (mask: Mode) -> Mode {
ret := syscall(SYS_umask, transmute(u32) mask)
- return transmute(u32) cast(u32) ret
+ return transmute(Mode) cast(u32) ret
}
/*
@@ -1397,12 +1392,12 @@ ptrace_traceme :: proc "contextless" (rq: PTrace_Traceme_Type) -> (Errno) {
}
ptrace_peek :: proc "contextless" (rq: PTrace_Peek_Type, pid: Pid, addr: uintptr) -> (uint, Errno) {
- ret := syscall(SYS_ptrace, rq, pid: Pid, addr, pid)
- return errno_unwrap(rq, uint)
+ ret := syscall(SYS_ptrace, rq, pid, addr)
+ return errno_unwrap(ret, uint)
}
ptrace_poke :: proc "contextless" (rq: PTrace_Poke_Type, pid: Pid, addr: uintptr, data: uint) -> (Errno) {
- ret := syscall(SYS_ptrace, rq, pid: Pid, addr, data)
+ ret := syscall(SYS_ptrace, rq, pid, addr, data)
return Errno(-ret)
}
@@ -1436,12 +1431,12 @@ ptrace_setfpxregs :: proc "contextless" (rq: PTrace_Setfpxregs_Type, pid: Pid, b
return Errno(-ret)
}
-ptrace_getregset :: proc "contextless" (rq: PTrace_Getgetset_Type, pid: Pid, note: PTrace_Note_Type, buf: ^IO_Vec) -> (Errno) {
+ptrace_getregset :: proc "contextless" (rq: PTrace_Getregset_Type, pid: Pid, note: PTrace_Note_Type, buf: ^IO_Vec) -> (Errno) {
ret := syscall(SYS_ptrace, rq, pid, note, buf)
return Errno(-ret)
}
-ptrace_setregset :: proc "contextless" (rq: PTrace_Setgetset_Type, pid: Pid, note: PTrace_Note_Type, buf: ^IO_Vec) -> (Errno) {
+ptrace_setregset :: proc "contextless" (rq: PTrace_Setregset_Type, pid: Pid, note: PTrace_Note_Type, buf: ^IO_Vec) -> (Errno) {
ret := syscall(SYS_ptrace, rq, pid, note, buf)
return Errno(-ret)
}
@@ -1456,13 +1451,13 @@ ptrace_peeksiginfo :: proc "contextless" (rq: PTrace_Peeksiginfo_Type, pid: Pid,
return Errno(-ret)
}
-ptrace_getsigmask :: proc "contextless" (rq: PTrace_Getsigmask, pid: Pid, sigmask: ^Sig_Mask) -> (Errno) {
- ret := syscall(SYS_ptrace, rq, pid, size_of(Sig_Mask), sigmask)
+ptrace_getsigmask :: proc "contextless" (rq: PTrace_Getsigmask_Type, pid: Pid, sigmask: ^Sig_Set) -> (Errno) {
+ ret := syscall(SYS_ptrace, rq, pid, size_of(Sig_Set), sigmask)
return Errno(-ret)
}
-ptrace_setsigmask :: proc "contextless" (rq: PTrace_Setsigmask, pid: Pid, sigmask: ^Sig_Mask) -> (Errno) {
- ret := syscall(SYS_ptrace, rq, pid, size_of(Sig_Mask), sigmask)
+ptrace_setsigmask :: proc "contextless" (rq: PTrace_Setsigmask_Type, pid: Pid, sigmask: ^Sig_Set) -> (Errno) {
+ ret := syscall(SYS_ptrace, rq, pid, size_of(Sig_Set), sigmask)
return Errno(-ret)
}
@@ -1740,10 +1735,10 @@ setregid :: proc "contextless" (real: Gid, effective: Gid) -> (Errno) {
*/
getgroups :: proc "contextless" (gids: []Gid) -> (int, Errno) {
when size_of(int) == 8 {
- ret := syscall(SYS_getgroups, len(gids), rawptr(gids))
+ ret := syscall(SYS_getgroups, len(gids), raw_data(gids))
return errno_unwrap(ret, int)
} else {
- ret := syscall(SYS_getgroups32, len(gids), rawptr(gids))
+ ret := syscall(SYS_getgroups32, len(gids), raw_data(gids))
return errno_unwrap(ret, int)
}
}
@@ -1755,10 +1750,10 @@ getgroups :: proc "contextless" (gids: []Gid) -> (int, Errno) {
*/
setgroups :: proc "contextless" (gids: []Gid) -> (Errno) {
when size_of(int) == 8 {
- ret := syscall(SYS_setgroup, len(gids), rawptr(gids))
+ ret := syscall(SYS_setgroups, len(gids), raw_data(gids))
return Errno(-ret)
} else {
- ret := syscall(SYS_setgroup32, len(gids), rawptr(gids))
+ ret := syscall(SYS_setgroups32, len(gids), raw_data(gids))
return Errno(-ret)
}
}
diff --git a/core/sys/linux/types.odin b/core/sys/linux/types.odin
index fb2cfe8f6..9928c6cb6 100644
--- a/core/sys/linux/types.odin
+++ b/core/sys/linux/types.odin
@@ -564,7 +564,7 @@ Sig_Event :: struct {
value: Sig_Val,
signo: i32,
notify: i32,
- using: struct #raw_union {
+ using _: struct #raw_union {
_: [SIGEV_PAD_SIZE]u32,
thread_id: Pid,
using _: struct {
@@ -651,7 +651,7 @@ Msg_Hdr :: struct {
iov: []IO_Vec, // ptr followed by length, abi matches
control: []u8,
flags: Socket_Msg,
-};
+}
/*
Multiple message header for sendmmsg/recvmmsg
@@ -754,7 +754,7 @@ IO_Vec :: struct {
/*
Access mode for shared memory
*/
-IPC_Mode :: bit_set[IPC_Mode; u32]
+IPC_Mode :: bit_set[IPC_Mode_Bits; u32]
/*
Flags used by IPC objects
@@ -772,7 +772,7 @@ IPC_Perm :: struct {
cgid: u32,
mode: IPC_Mode,
seq: u16,
- _: [2 + 2*size_of(int)],
+ _: [2 + 2*size_of(int)]u8,
}
when size_of(int) == 8 || ODIN_ARCH == .i386 {
@@ -816,7 +816,7 @@ Shmid_DS :: _Arch_Shmid_DS
SystemV shared memory info.
*/
Shm_Info :: struct {
- used_ids: i32
+ used_ids: i32,
shm_tot: uint,
shm_rss: uint,
shm_swp: uint,
@@ -843,7 +843,7 @@ when ODIN_ARCH == .i386 {
nsems: uint,
_: [2]uint,
}
-else when ODIN_ARCH == .amd64 {
+} else when ODIN_ARCH == .amd64 {
_Arch_Semid_DS :: struct {
perm: IPC_Perm,
otime: int,
@@ -891,8 +891,8 @@ Sem_Un :: struct #raw_union {
/*
SystenV semaphore info.
*/
-Sem_Info {
- map: i32,
+Sem_Info :: struct {
+ semmap: i32,
mni: i32,
mns: i32,
mnu: i32,
@@ -915,7 +915,7 @@ Msg_Buf :: struct {
/*
SystemV message queue data.
*/
-struct Msqid_DS {
+Msqid_DS :: struct {
perm: IPC_Perm,
stime: uint,
rtime: uint,
@@ -925,8 +925,8 @@ struct Msqid_DS {
qbytes: uint,
lspid: Pid,
lrpid: Pid,
- _: [2]uint
-};
+ _: [2]uint,
+}
/*
Interval timer types
@@ -945,7 +945,7 @@ ITimer_Val :: struct {
value: Time_Val,
}
-ITimer_Spec {
+ITimer_Spec :: struct {
interval: Time_Spec,
value: Time_Spec,
}
@@ -953,7 +953,7 @@ ITimer_Spec {
/*
Flags for POSIX interval timers.
*/
-ITimer_Flags :: bit_set[ITimer_Flags_Bits, u32]
+ITimer_Flags :: bit_set[ITimer_Flags_Bits; u32]
when ODIN_ARCH == .arm32 {
_Arch_User_Regs :: struct {
@@ -991,7 +991,7 @@ when ODIN_ARCH == .arm32 {
vregs: [32]u128,
fpsr: u32,
fpcr: u32,
- _: [2]u32
+ _: [2]u32,
}
_Arch_User_FPX_Regs :: struct {}
} else when ODIN_ARCH == .i386 {
@@ -1042,7 +1042,7 @@ when ODIN_ARCH == .arm32 {
padding: [56]uint,
}
} else when ODIN_ARCH == .amd64 {
- _Arch_User_Regs {
+ _Arch_User_Regs :: struct {
// Callee-preserved, may not be correct if the syscall doesn't need
// these registers
r15: uint,
@@ -1083,7 +1083,23 @@ when ODIN_ARCH == .arm32 {
mxcsr_mask: u32,
st_space: [32]u32,
xmm_space: [64]u32,
- _: [24]u32;
+ _: [24]u32,
+ }
+ // FXSR instruction set state
+ _Arch_User_FPX_Regs :: struct {
+ cwd: u16,
+ swd: u16,
+ twd: u16,
+ fop: u16,
+ fip: uint,
+ fcs: uint,
+ foo: uint,
+ fos: uint,
+ mxcsr: uint,
+ _: uint,
+ st_space: [32]uint,
+ xmm_space: [32]uint,
+ padding: [56]uint,
}
}
@@ -1120,13 +1136,12 @@ PTrace_Peek_Sig_Info_Args :: struct {
/*
ptrace's PEEKSIGINFO flags.
*/
-PTrace_Peek_Sig_Info_Flags :: bit_set[PTrace_Peek_Sig_Info_Flags_Bits, u32]
+PTrace_Peek_Sig_Info_Flags :: bit_set[PTrace_Peek_Sig_Info_Flags_Bits; u32]
/*
ptrace's SECCOMP metadata.
*/
-PTrace_Seccomp_Metadata
-{
+PTrace_Seccomp_Metadata :: struct {
filter_off: u64,
flags: u64,
}
@@ -1153,19 +1168,19 @@ PTrace_Syscall_Info :: struct {
args: [6]u64,
ret_data: u32,
},
- };
-};
+ },
+}
/*
ptrace's results of GET_RSEQ_CONFIGURATION.
*/
-PTrace_RSeq_Configuration {
+PTrace_RSeq_Configuration :: struct {
rseq_abi_pointer: u64,
rseq_abi_size: u32,
signature: u32,
flags: u32,
_: u32,
-};
+}
/*
Note types for PTRACE_GETREGSET. Mirrors constants in `elf` definition,