Merge pull request #3434 from flysand7/sys-linux-fixes

[sys/linux]: Fix syscall calls for open and fstat
This commit is contained in:
gingerBill
2024-04-15 12:28:59 +01:00
committed by GitHub
+4 -4
View File
@@ -40,10 +40,10 @@ write :: proc "contextless" (fd: Fd, buf: []u8) -> (int, Errno) {
*/ */
open :: proc "contextless" (name: cstring, flags: Open_Flags, mode: Mode = {}) -> (Fd, Errno) { open :: proc "contextless" (name: cstring, flags: Open_Flags, mode: Mode = {}) -> (Fd, Errno) {
when ODIN_ARCH == .arm64 { when ODIN_ARCH == .arm64 {
ret := syscall(SYS_openat, AT_FDCWD, transmute(uintptr) name, transmute(u32) mode) ret := syscall(SYS_openat, AT_FDCWD, transmute(uintptr) name, transmute(u32) flags, transmute(u32) mode)
return errno_unwrap(ret, Fd) return errno_unwrap(ret, Fd)
} else { } else {
ret := syscall(SYS_open, transmute(uintptr) name, transmute(u32) mode) ret := syscall(SYS_open, transmute(uintptr) name, transmute(u32) flags, transmute(u32) mode)
return errno_unwrap(ret, Fd) return errno_unwrap(ret, Fd)
} }
} }
@@ -91,10 +91,10 @@ stat :: proc "contextless" (filename: cstring, stat: ^Stat) -> (Errno) {
*/ */
fstat :: proc "contextless" (fd: Fd, stat: ^Stat) -> (Errno) { fstat :: proc "contextless" (fd: Fd, stat: ^Stat) -> (Errno) {
when size_of(int) == 8 { when size_of(int) == 8 {
ret := syscall(SYS_fstat, stat) ret := syscall(SYS_fstat, cast(i32) fd, stat)
return Errno(-ret) return Errno(-ret)
} else { } else {
ret := syscall(SYS_fstat64, stat) ret := syscall(SYS_fstat64, cast(i32) fd, stat)
return Errno(-ret) return Errno(-ret)
} }
} }