浏览代码

Merge branch 'sys_wait_macros' into 'master'

sys_wait: implement C macros properly

See merge request redox-os/relibc!133
Jeremy Soller 6 年之前
父节点
当前提交
6f8fff4b1c
共有 3 个文件被更改,包括 14 次插入41 次删除
  1. 13 0
      include/bits/sys/wait.h
  2. 1 0
      src/sys_wait/cbindgen.toml
  3. 0 41
      src/sys_wait/src/lib.rs

+ 13 - 0
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 */

+ 1 - 0
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]

+ 0 - 41
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)