diff --git a/include/bits/sys/wait.h b/include/bits/sys/wait.h new file mode 100644 index 0000000000000000000000000000000000000000..94d5a2ba0f2808a240eb166e2f410f6b67928483 --- /dev/null +++ b/include/bits/sys/wait.h @@ -0,0 +1,13 @@ +#ifndef _BITS_SYS_WAIT_H +#define _BITS_SYS_WAIT_H + +#define WEXITSTATUS(s) (((s) & 0xff00) >> 8) +#define WTERMSIG(s) ((s) & 0x7f) +#define WSTOPSIG(s) WEXITSTATUS(s) +#define WCOREDUMP(s) ((s) & 0x80) +#define WIFEXITED(s) (!WTERMSIG(s)) +#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) +#define WIFCONTINUED(s) ((s) == 0xffff) + +#endif /* _BITS_SYS_WAIT_H */ diff --git a/src/sys_wait/cbindgen.toml b/src/sys_wait/cbindgen.toml index 528282cf3a32bcf628c85e18edff603ce6b2f962..7fd08600788a249945934c749738aa302d1a0565 100644 --- a/src/sys_wait/cbindgen.toml +++ b/src/sys_wait/cbindgen.toml @@ -1,6 +1,7 @@ sys_includes = ["sys/types.h", "sys/resource.h"] include_guard = "_SYS_WAIT_H" style = "Tag" +trailer = "#include <bits/sys/wait.h>" language = "C" [enum] diff --git a/src/sys_wait/src/lib.rs b/src/sys_wait/src/lib.rs index 9d5c3cc60cb992633d911d6b40b2b8d47e1807d8..7496ed9adc922bf9459981e38a333b6e777dd703 100644 --- a/src/sys_wait/src/lib.rs +++ b/src/sys_wait/src/lib.rs @@ -21,47 +21,6 @@ pub const __WNOTHREAD: c_int = 0x20000000; pub const __WALL: c_int = 0x40000000; pub const __WCLONE: c_int = 0x80000000; -#[inline] -pub fn WEXITSTATUS(status: c_int) -> c_int { - (status & 0xff00) >> 8 -} - -#[inline] -pub fn WTERMSIG(status: c_int) -> c_int { - status & 0x7f -} - -#[inline] -pub fn WSTOPSIG(status: c_int) -> c_int { - WEXITSTATUS(status) -} - -#[inline] -pub fn WCOREDUMP(status: c_int) -> c_int { - status & 0x80 -} - -#[inline] -pub fn WIFEXITED(status: c_int) -> c_int { - // This is simulate the Not operator when used for regular integers in C - (WTERMSIG(status) == 0) as c_int -} - -#[inline] -pub fn WIFSTOPPED(status: c_int) -> c_int { - (((((status & 0xffff) * 0x10001) >> 8) as c_short) > 0x7f00) as c_int -} - -#[inline] -pub fn WIFSIGNALED(status: c_int) -> c_int { - ((status & 0xffff) - (1 as c_int) < 0xff) as c_int -} - -#[inline] -pub fn WIFCONTINUED(status: c_int) -> c_int { - (status == 0xffff) as c_int -} - #[no_mangle] pub unsafe extern "C" fn wait(stat_loc: *mut c_int) -> pid_t { waitpid(!0, stat_loc, 0)