Skip to content

Commit

Permalink
Rollup merge of rust-lang#39914 - raphlinus:mx_handle_wait, r=alexcri…
Browse files Browse the repository at this point in the history
…chton

Follow rename of mx_handle_wait Magenta syscalls

The mx_handle_wait_* syscalls in Magenta were renamed to
mx_object_wait. The syscall is used in the Magenta/Fuchsia
implementation of std::process, to wait on child processes.

In addition, this patch enables the use of the system provided
libbacktrace library on Fuchsia targets. Symbolization is not yet
working, but at least it allows printing hex addresses in a backtrace
and makes building succeed when the backtrace feature is not disabled.
  • Loading branch information
frewsxcv authored Feb 23, 2017
2 parents 15330bf + 6091330 commit a83511e
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 3 deletions.
4 changes: 4 additions & 0 deletions src/libstd/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ fn main() {
println!("cargo:rustc-link-lib=userenv");
println!("cargo:rustc-link-lib=shell32");
} else if target.contains("fuchsia") {
// use system-provided libbacktrace
if cfg!(feature = "backtrace") {
println!("cargo:rustc-link-lib=backtrace");
}
println!("cargo:rustc-link-lib=magenta");
println!("cargo:rustc-link-lib=mxio");
println!("cargo:rustc-link-lib=launchpad"); // for std::process
Expand Down
2 changes: 1 addition & 1 deletion src/libstd/sys/unix/process/magenta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ extern {
pub fn mx_handle_duplicate(handle: mx_handle_t, rights: mx_rights_t,
out: *const mx_handle_t) -> mx_handle_t;

pub fn mx_handle_wait_one(handle: mx_handle_t, signals: mx_signals_t, timeout: mx_time_t,
pub fn mx_object_wait_one(handle: mx_handle_t, signals: mx_signals_t, timeout: mx_time_t,
pending: *mut mx_signals_t) -> mx_status_t;

pub fn mx_object_get_info(handle: mx_handle_t, topic: u32, buffer: *mut c_void,
Expand Down
4 changes: 2 additions & 2 deletions src/libstd/sys/unix/process/process_fuchsia.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ impl Process {
let mut avail: mx_size_t = 0;

unsafe {
mx_cvt(mx_handle_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
mx_cvt(mx_object_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
MX_TIME_INFINITE, ptr::null_mut()))?;
mx_cvt(mx_object_get_info(self.handle.raw(), MX_INFO_PROCESS,
&mut proc_info as *mut _ as *mut libc::c_void,
Expand All @@ -174,7 +174,7 @@ impl Process {
let mut avail: mx_size_t = 0;

unsafe {
let status = mx_handle_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
let status = mx_object_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
0, ptr::null_mut());
match status {
0 => { }, // Success
Expand Down

0 comments on commit a83511e

Please sign in to comment.