Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SGX target: Expose thread id function in os module #58949

Merged
merged 1 commit into from
Mar 16, 2019

Conversation

jethrogb
Copy link
Contributor

@jethrogb jethrogb commented Mar 5, 2019

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

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 5, 2019
@faern
Copy link
Contributor

faern commented Mar 5, 2019

Would it make sense to add get_tcs_addr to fortanix-sgx-abi instead? Then it will be available to those who need the syscall, and std can just call where it's defined, it depends on that crate anyway.

I don't know the exact relationship between the fortanix-sgx-abi crate and libc and/or std. And I also don't know anything about SGX in particular, but I find it slightly odd that fortanix-sgx-abi defines the type Tcs and a method that takes it as an argument. But no way to actually obtain an instance.

@jethrogb
Copy link
Contributor Author

jethrogb commented Mar 5, 2019

No, get_tcs_addr is defined in std, so that's the only place it could reasonably be exposed. Also, the fortanix-sgx-abi crate is not meant to be used by users of std. All its types are re-exported in std::os::fortanix_sgx.

@jethrogb
Copy link
Contributor Author

jethrogb commented Mar 5, 2019

I find it slightly odd that fortanix-sgx-abi defines the type Tcs and a method that takes it as an argument. But no way to actually obtain an instance.

The fortanix-sgx-abi crate is a specification crate, it doesn't contain any actual implementations. Other crates (such as std) must provide implementations, so it provides the types (and macros) to help you do so.

@faern
Copy link
Contributor

faern commented Mar 6, 2019

Ah. I see now that it's defined in entry.S. My bad! I thought it was just an extern declaration and provided by the system. In which case it would have fit in libc or similar.

@joshtriplett
Copy link
Member

This looks reasonable to me.

@bors r+

@bors
Copy link
Contributor

bors commented Mar 11, 2019

📌 Commit 67eabc6 has been approved by joshtriplett

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 11, 2019
kennytm added a commit to kennytm/rust that referenced this pull request Mar 15, 2019
…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
kennytm added a commit to kennytm/rust that referenced this pull request Mar 16, 2019
…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
bors added a commit that referenced this pull request Mar 16, 2019
Rollup of 37 pull requests

Successful merges:

 - #58854 (appveyor: Use VS2017 for all our images)
 - #58855 (std: Spin for a global malloc lock on wasm32)
 - #58873 (Fix "Auto-hide item methods documentation" setting)
 - #58901 (Change `std::fs::copy` to use `copyfile` on MacOS and iOS)
 - #58933 (Move alloc::prelude::* to alloc::prelude::v1, make alloc a subset of std)
 - #58938 (core: ensure VaList passes improper_ctypes lint)
 - #58941 (MIPS: add r6 support)
 - #58949 (SGX target: Expose thread id function in os module)
 - #58959 (Add release notes for PR #56243)
 - #58976 (Default to integrated `rust-lld` linker for UEFI targets)
 - #59009 (Fix SGX implementations of read/write_vectored.)
 - #59025 (Fix generic argument lookup for Self)
 - #59036 (Fix ICE in MIR pretty printing)
 - #59037 (Avoid some common false positives in intra doc link checking)
 - #59072 (we can now skip should_panic tests with the libtest harness)
 - #59079 (add suggestions to invalid macro item error)
 - #59082 (A few improvements to comments in user-facing crates)
 - #59102 (Consistent naming for duration_float methods and additional f32 methods)
 - #59118 (rustc: fix ICE when trait alias has bare Self)
 - #59139 (Unregress using scalar unions in constants.)
 - #59146 (Suggest return lifetime when there's only one named lifetime)
 - #59147 (Make std time tests more robust for platform differences)
 - #59152 (Stabilize Range*::contains.)
 - #59156 ([wg-async-await] Add regression test for #55809.)
 - #59158 (Revert "Don't generate minification variable if minification disabled")
 - #59169 (Add `-Z allow_features=...` flag)
 - #59173 (bootstrap: Default to a sensible llvm-suffix.)
 - #59175 (Don't run test launching `echo` since that doesn't exist on Windows)
 - #59180 (Use try blocks in rustc_codegen_ssa)
 - #59185 (No old chestnuts in iter::repeat docs)
 - #59201 (Remove restriction on isize/usize in repr(simd))
 - #59204 (Output diagnostic information for rustdoc)
 - #59206 (Improved test output)
 - #59208 (Reduce a Code Repetition Related to Bit Operation)
 - #59212 (Add x86_64 musl host to the manifest)
 - #59221 (Option and Result: Add references to documentation of as_ref and as_mut)
 - #59231 (Stabilize Option::copied)
@bors bors merged commit 67eabc6 into rust-lang:master Mar 16, 2019
@workingjubilee workingjubilee added the O-SGX Target: SGX label Jul 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
O-SGX Target: SGX S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants