Skip to content

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

Merged
bors merged 1 commit into
rust-lang:masterfrom
jethrogb:jb/sgx-thread-id
Mar 16, 2019
Merged

SGX target: Expose thread id function in os module#58949
bors merged 1 commit into
rust-lang:masterfrom
jethrogb:jb/sgx-thread-id

Conversation

@jethrogb

@jethrogbjethrogb commented Mar 5, 2019

Copy link
Copy Markdown
Contributor

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-highfiverust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 5, 2019
@faern

faern commented Mar 5, 2019

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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

jethrogb commented Mar 5, 2019

Copy link
Copy Markdown
ContributorAuthor

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

faern commented Mar 6, 2019

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Member

This looks reasonable to me.

@bors r+

@bors

bors commented Mar 11, 2019

Copy link
Copy Markdown
Collaborator

📌 Commit 67eabc6 has been approved by joshtriplett

@borsbors 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
@kennytmkennytm mentioned this pull request Mar 15, 2019
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
@kennytmkennytm mentioned this pull request Mar 16, 2019
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:masterMar 16, 2019
@workingjubileeworkingjubilee added the O-SGX Target: SGX label Jul 30, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

O-SGXTarget: SGXS-waiting-on-borsStatus: 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

@jethrogb@faern@joshtriplett@bors@rust-highfive@workingjubilee