Inline start_thread into its callers.

This commit is contained in:
Vytautas Astrauskas 2020-03-31 12:35:07 -07:00
parent 64e5327b6e
commit 753bc7ddf8
6 changed files with 30 additions and 26 deletions

View File

@ -4,8 +4,8 @@ use crate::io;
use crate::mem; use crate::mem;
use crate::ptr; use crate::ptr;
use crate::sys::cloudabi::abi; use crate::sys::cloudabi::abi;
use crate::sys::stack_overflow;
use crate::sys::time::checked_dur2intervals; use crate::sys::time::checked_dur2intervals;
use crate::sys_common::thread::*;
use crate::time::Duration; use crate::time::Duration;
pub const DEFAULT_MIN_STACK_SIZE: usize = 2 * 1024 * 1024; pub const DEFAULT_MIN_STACK_SIZE: usize = 2 * 1024 * 1024;
@ -49,7 +49,11 @@ impl Thread {
extern "C" fn thread_start(main: *mut libc::c_void) -> *mut libc::c_void { extern "C" fn thread_start(main: *mut libc::c_void) -> *mut libc::c_void {
unsafe { unsafe {
start_thread(main as *mut u8); // Next, set up our stack overflow handler which may get triggered if we run
// out of stack.
let _handler = stack_overflow::Handler::new();
// Finally, let's run some code.
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
} }
ptr::null_mut() ptr::null_mut()
} }

View File

@ -5,11 +5,10 @@ use crate::fmt;
use crate::io; use crate::io;
use crate::mem; use crate::mem;
use crate::sys::hermit::abi; use crate::sys::hermit::abi;
use crate::sys::stack_overflow;
use crate::time::Duration; use crate::time::Duration;
use core::u32; use core::u32;
use crate::sys_common::thread::*;
pub type Tid = abi::Tid; pub type Tid = abi::Tid;
/// Priority of a task /// Priority of a task
@ -70,7 +69,11 @@ impl Thread {
extern "C" fn thread_start(main: usize) { extern "C" fn thread_start(main: usize) {
unsafe { unsafe {
start_thread(main as *mut u8); // Next, set up our stack overflow handler which may get triggered if we run
// out of stack.
let _handler = stack_overflow::Handler::new();
// Finally, let's run some code.
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
} }
} }
} }

View File

@ -3,11 +3,9 @@ use crate::ffi::CStr;
use crate::io; use crate::io;
use crate::mem; use crate::mem;
use crate::ptr; use crate::ptr;
use crate::sys::os; use crate::sys::{os, stack_overflow};
use crate::time::Duration; use crate::time::Duration;
use crate::sys_common::thread::*;
#[cfg(not(target_os = "l4re"))] #[cfg(not(target_os = "l4re"))]
pub const DEFAULT_MIN_STACK_SIZE: usize = 2 * 1024 * 1024; pub const DEFAULT_MIN_STACK_SIZE: usize = 2 * 1024 * 1024;
#[cfg(target_os = "l4re")] #[cfg(target_os = "l4re")]
@ -84,7 +82,11 @@ impl Thread {
extern "C" fn thread_start(main: *mut libc::c_void) -> *mut libc::c_void { extern "C" fn thread_start(main: *mut libc::c_void) -> *mut libc::c_void {
unsafe { unsafe {
start_thread(main as *mut u8); // Next, set up our stack overflow handler which may get triggered if we run
// out of stack.
let _handler = stack_overflow::Handler::new();
// Finally, let's run some code.
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
} }
ptr::null_mut() ptr::null_mut()
} }

View File

@ -3,11 +3,9 @@ use crate::ffi::CStr;
use crate::io; use crate::io;
use crate::mem; use crate::mem;
use crate::ptr; use crate::ptr;
use crate::sys::os; use crate::sys::{os, stack_overflow};
use crate::time::Duration; use crate::time::Duration;
use crate::sys_common::thread::*;
pub const DEFAULT_MIN_STACK_SIZE: usize = 0x40000; // 256K pub const DEFAULT_MIN_STACK_SIZE: usize = 0x40000; // 256K
pub struct Thread { pub struct Thread {
@ -72,7 +70,11 @@ impl Thread {
extern "C" fn thread_start(main: *mut libc::c_void) -> *mut libc::c_void { extern "C" fn thread_start(main: *mut libc::c_void) -> *mut libc::c_void {
unsafe { unsafe {
start_thread(main as *mut u8); // Next, set up our stack overflow handler which may get triggered if we run
// out of stack.
let _handler = stack_overflow::Handler::new();
// Finally, let's run some code.
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
} }
ptr::null_mut() ptr::null_mut()
} }

View File

@ -4,7 +4,7 @@ use crate::mem;
use crate::ptr; use crate::ptr;
use crate::sys::c; use crate::sys::c;
use crate::sys::handle::Handle; use crate::sys::handle::Handle;
use crate::sys_common::thread::*; use crate::sys::stack_overflow;
use crate::time::Duration; use crate::time::Duration;
use libc::c_void; use libc::c_void;
@ -50,7 +50,11 @@ impl Thread {
extern "system" fn thread_start(main: *mut c_void) -> c::DWORD { extern "system" fn thread_start(main: *mut c_void) -> c::DWORD {
unsafe { unsafe {
start_thread(main as *mut u8); // Next, set up our stack overflow handler which may get triggered if we run
// out of stack.
let _handler = stack_overflow::Handler::new();
// Finally, let's run some code.
Box::from_raw(main as *mut Box<dyn FnOnce()>)();
} }
0 0
} }

View File

@ -1,18 +1,7 @@
use crate::env; use crate::env;
use crate::sync::atomic::{self, Ordering}; use crate::sync::atomic::{self, Ordering};
use crate::sys::stack_overflow;
use crate::sys::thread as imp; use crate::sys::thread as imp;
#[allow(dead_code)]
pub unsafe fn start_thread(main: *mut u8) {
// Next, set up our stack overflow handler which may get triggered if we run
// out of stack.
let _handler = stack_overflow::Handler::new();
// Finally, let's run some code.
Box::from_raw(main as *mut Box<dyn FnOnce()>)()
}
pub fn min_stack() -> usize { pub fn min_stack() -> usize {
static MIN: atomic::AtomicUsize = atomic::AtomicUsize::new(0); static MIN: atomic::AtomicUsize = atomic::AtomicUsize::new(0);
match MIN.load(Ordering::SeqCst) { match MIN.load(Ordering::SeqCst) {