mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-16 21:15:18 +03:00
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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -111,7 +111,7 @@ pub struct mx_info_process_t {
|
||||
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,
|
||||
|
||||
@@ -151,7 +151,7 @@ pub fn wait(&mut self) -> io::Result<ExitStatus> {
|
||||
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,
|
||||
@@ -174,7 +174,7 @@ pub fn try_wait(&mut self) -> io::Result<Option<ExitStatus>> {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user