Skip to content

Commit

Permalink
Rollup merge of rust-lang#58949 - jethrogb:jb/sgx-thread-id, r=joshtr…
Browse files Browse the repository at this point in the history
…iplett

SGX target: Expose thread id function in os module

In order to call `std::os::fortanix_sgx::usercalls::send`, you need the thread id. This exposes it through another function in `std::os::fortanix_sgx`.

I looked at how other platforms do this. On Windows and `cfg(unix)` you can get the OS handle from a `thread::JoinHandle`, but that's not sufficient, I need it for a `thread::Thread`. In the future, this functionality could be added to `thread::Thread` and this platform can follow suit.

r? @joshtriplett
  • Loading branch information
kennytm authored Mar 16, 2019
2 parents 9859b81 + 67eabc6 commit 152ed37
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/libstd/os/fortanix_sgx/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,8 @@ pub mod mem {
}

pub use crate::sys::ext::{io, arch, ffi};

/// Functions for querying thread-related information.
pub mod thread {
pub use crate::sys::abi::thread::current;
}
1 change: 1 addition & 0 deletions src/libstd/sys/sgx/abi/thread.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use fortanix_sgx_abi::Tcs;
/// all currently running threads in the enclave, and it is guaranteed to be
/// constant for the lifetime of the thread. More specifically for SGX, there
/// is a one-to-one correspondence of the ID to the address of the TCS.
#[unstable(feature = "sgx_platform", issue = "56975")]
pub fn current() -> Tcs {
extern "C" { fn get_tcs_addr() -> Tcs; }
unsafe { get_tcs_addr() }
Expand Down

0 comments on commit 152ed37

Please sign in to comment.