]> git.lizzy.rs Git - rust.git/commitdiff
use new interface to create threads on HermitCore
authorStefan Lankes <slankes@eonerc.rwth-aachen.de>
Sun, 26 Apr 2020 17:07:13 +0000 (19:07 +0200)
committerStefan Lankes <slankes@eonerc.rwth-aachen.de>
Sun, 26 Apr 2020 17:47:46 +0000 (19:47 +0200)
- the new interface allows to define the stack size

Cargo.lock
src/libstd/Cargo.toml
src/libstd/sys/hermit/thread.rs

index 816d65cb2ce23c83e22115ef8f85738b03525496..0f9f2c6b4fb071291ead6a4e5bd5b24316772b00 100644 (file)
@@ -1366,9 +1366,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.1.10"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "725cf19794cf90aa94e65050cb4191ff5d8fa87a498383774c47b332e3af952e"
+checksum = "61565ff7aaace3525556587bd2dc31d4a07071957be715e63ce7b1eccf51a8f4"
 dependencies = [
  "compiler_builtins",
  "libc",
index ceb39c01c6723442d8ff7ec15d8d20c5f9d79644..923d5fa8cacdbebf5e6213100416df8f07f37d7d 100644 (file)
@@ -41,7 +41,7 @@ dlmalloc = { version = "0.1", features = ['rustc-dep-of-std'] }
 fortanix-sgx-abi = { version = "0.3.2", features = ['rustc-dep-of-std'] }
 
 [target.'cfg(all(any(target_arch = "x86_64", target_arch = "aarch64"), target_os = "hermit"))'.dependencies]
-hermit-abi = { version = "0.1.10", features = ['rustc-dep-of-std'] }
+hermit-abi = { version = "0.1.12", features = ['rustc-dep-of-std'] }
 
 [target.wasm32-wasi.dependencies]
 wasi = { version = "0.9.0", features = ['rustc-dep-of-std'], default-features = false }
index 7e3fb4c6d20523ebd9430a33064d936c5a28cccb..55924ee0e6885baa22ea99ee0a1b07d1898dad5e 100644 (file)
@@ -16,25 +16,24 @@ pub struct Thread {
 unsafe impl Send for Thread {}
 unsafe impl Sync for Thread {}
 
-pub const DEFAULT_MIN_STACK_SIZE: usize = 262144;
+pub const DEFAULT_MIN_STACK_SIZE: usize = 1_048_576;
 
 impl Thread {
     pub unsafe fn new_with_coreid(
-        _stack: usize,
+        stack: usize,
         p: Box<dyn FnOnce()>,
         core_id: isize,
     ) -> io::Result<Thread> {
         let p = Box::into_raw(box p);
-        let mut tid: Tid = u32::MAX;
-        let ret = abi::spawn(
-            &mut tid as *mut Tid,
+        let tid = abi::spawn2(
             thread_start,
-            &*p as *const _ as *const u8 as usize,
+            p as usize,
             abi::Priority::into(abi::NORMAL_PRIO),
+            stack,
             core_id,
         );
 
-        return if ret != 0 {
+        return if tid == 0 {
             // The thread failed to start and as a result p was not consumed. Therefore, it is
             // safe to reconstruct the box so that it gets deallocated.
             drop(Box::from_raw(p));