Skip to content
New issue

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

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

Already on GitHub? # 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
Collaborator

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
# for free to join this conversation on GitHub. Already have an account? # 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