Merge branch 'master' into master

This commit is contained in:
Tom Almeida
2018-03-16 23:26:11 +08:00
committed by GitHub
8 changed files with 39 additions and 4 deletions
+1
View File
@@ -20,6 +20,7 @@ extern crate string;
extern crate sys_time;
extern crate time;
extern crate unistd;
extern crate wait;
extern crate wctype;
#[lang = "eh_personality"]
+4
View File
@@ -163,6 +163,10 @@ pub fn unlink(path: *const c_char) -> c_int {
e(unsafe { syscall!(UNLINKAT, AT_FDCWD, path, 0) }) as c_int
}
pub fn waitpid(pid: pid_t, stat_loc: *mut c_int, options: c_int) -> pid_t {
e(unsafe { syscall!(WAIT4, pid, stat_loc, options, 0) }) as pid_t
}
pub fn write(fildes: c_int, buf: &[u8]) -> ssize_t {
e(unsafe { syscall!(WRITE, fildes, buf.as_ptr(), buf.len()) }) as ssize_t
}
+11
View File
@@ -206,6 +206,17 @@ pub fn unlink(path: *const c_char) -> c_int {
e(syscall::unlink(path)) as c_int
}
pub fn waitpid(pid: pid_t, stat_loc: *mut c_int, options: c_int) -> pid_t {
unsafe {
let mut temp: usize = 0;
let res = e(syscall::waitpid(pid as usize, &mut temp, options as usize));
if !stat_loc.is_null() {
*stat_loc = temp as c_int;
}
res
}
}
pub fn write(fd: c_int, buf: &[u8]) -> ssize_t {
e(syscall::write(fd as usize, buf)) as ssize_t
}
+2 -2
View File
@@ -1,7 +1,7 @@
sys_includes = ["sys/types.h", "sys/time.h"]
sys_includes = ["sys/types.h", "stdint.h", "sys/time.h"]
include_guard = "_SYS_RESOURCE_H"
language = "C"
style = "Tag"
style = "Both"
[enum]
prefix_with_name = true
+2 -2
View File
@@ -11,7 +11,7 @@ use resource::rusage;
#[no_mangle]
pub unsafe extern "C" fn wait(stat_loc: *mut c_int) -> pid_t {
unimplemented!();
waitpid(!0, stat_loc, 0)
}
#[no_mangle]
@@ -39,5 +39,5 @@ pub unsafe extern "C" fn wait3(
#[no_mangle]
pub unsafe extern "C" fn waitpid(pid: pid_t, stat_loc: *mut c_int, options: c_int) -> pid_t {
unimplemented!();
platform::waitpid(pid, stat_loc, options)
}
+1
View File
@@ -37,5 +37,6 @@
/string/strrchr
/string/strspn
/unlink
/waitpid
/write
+1
View File
@@ -35,6 +35,7 @@ EXPECT_BINS=\
string/strstr \
string/strpbrk \
unlink \
waitpid \
write
# Binaries that may generate varied output
+17
View File
@@ -0,0 +1,17 @@
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char** argv) {
pid_t pid = fork();
if (pid == 0) {
// child
sleep(1);
exit(0);
} else {
// parent
int stat_loc;
waitpid(pid, &stat_loc, 0);
}
return 0;
}