mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-29 17:53:58 +00:00
Merge pull request #3971 from jasonKercher/os2-process-linux
os2 process linux implementation
This commit is contained in:
@@ -983,6 +983,20 @@ Sig_Action_Flag :: enum u32 {
|
||||
RESETHAND = 31,
|
||||
}
|
||||
|
||||
/*
|
||||
Translation of code in Sig_Info for when signo is SIGCHLD
|
||||
*/
|
||||
Sig_Child_Code :: enum {
|
||||
NONE,
|
||||
EXITED,
|
||||
KILLED,
|
||||
DUMPED,
|
||||
TRAPPED,
|
||||
STOPPED,
|
||||
CONTINUED,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Type of socket to create
|
||||
- For TCP you want to use SOCK_STREAM
|
||||
|
||||
@@ -290,13 +290,13 @@ writev :: proc "contextless" (fd: Fd, iov: []IO_Vec) -> (int, Errno) {
|
||||
Available since Linux 1.0.
|
||||
For ARM64 available since Linux 2.6.16.
|
||||
*/
|
||||
access :: proc "contextless" (name: cstring, mode: Mode = F_OK) -> (bool, Errno) {
|
||||
access :: proc "contextless" (name: cstring, mode: Mode = F_OK) -> (Errno) {
|
||||
when ODIN_ARCH == .arm64 {
|
||||
ret := syscall(SYS_faccessat, AT_FDCWD, cast(rawptr) name, transmute(u32) mode)
|
||||
return errno_unwrap(ret, bool)
|
||||
return Errno(-ret)
|
||||
} else {
|
||||
ret := syscall(SYS_access, cast(rawptr) name, transmute(u32) mode)
|
||||
return errno_unwrap(ret, bool)
|
||||
return Errno(-ret)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2627,9 +2627,9 @@ fchmodat :: proc "contextless" (dirfd: Fd, name: cstring, mode: Mode, flags: FD_
|
||||
Checks the user permissions for a file at specified dirfd.
|
||||
Available since Linux 2.6.16.
|
||||
*/
|
||||
faccessat :: proc "contextless" (dirfd: Fd, name: cstring, mode: Mode = F_OK) -> (bool, Errno) {
|
||||
faccessat :: proc "contextless" (dirfd: Fd, name: cstring, mode: Mode = F_OK) -> (Errno) {
|
||||
ret := syscall(SYS_faccessat, dirfd, cast(rawptr) name, transmute(u32) mode)
|
||||
return errno_unwrap(ret, bool)
|
||||
return Errno(-ret)
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2927,9 +2927,9 @@ pidfd_getfd :: proc "contextless" (pidfd: Pid_FD, fd: Fd, flags: i32 = 0) -> (Fd
|
||||
Checks the user permissions for a file at specified dirfd (with flags).
|
||||
Available since Linux 5.8.
|
||||
*/
|
||||
faccessat2 :: proc "contextless" (dirfd: Fd, name: cstring, mode: Mode = F_OK, flags: FD_Flags = FD_Flags{}) -> (bool, Errno) {
|
||||
faccessat2 :: proc "contextless" (dirfd: Fd, name: cstring, mode: Mode = F_OK, flags: FD_Flags = FD_Flags{}) -> (Errno) {
|
||||
ret := syscall(SYS_faccessat2, dirfd, cast(rawptr) name, transmute(u32) mode, transmute(i32) flags)
|
||||
return errno_unwrap(ret, bool)
|
||||
return Errno(-ret)
|
||||
}
|
||||
|
||||
// TODO(flysand): process_madvise
|
||||
|
||||
Reference in New Issue
Block a user