File tree Expand file tree Collapse file tree 6 files changed +30
-26
lines changed Expand file tree Collapse file tree 6 files changed +30
-26
lines changed Original file line number Diff line number Diff line change @@ -4,8 +4,8 @@ use crate::io;
44use crate :: mem;
55use crate :: ptr;
66use crate :: sys:: cloudabi:: abi;
7+ use crate :: sys:: stack_overflow;
78use crate :: sys:: time:: checked_dur2intervals;
8- use crate :: sys_common:: thread:: * ;
99use crate :: time:: Duration ;
1010
1111pub const DEFAULT_MIN_STACK_SIZE : usize = 2 * 1024 * 1024 ;
@@ -49,7 +49,11 @@ impl Thread {
4949
5050 extern "C" fn thread_start ( main : * mut libc:: c_void ) -> * mut libc:: c_void {
5151 unsafe {
52- start_thread ( main as * mut u8 ) ;
52+ // Next, set up our stack overflow handler which may get triggered if we run
53+ // out of stack.
54+ let _handler = stack_overflow:: Handler :: new ( ) ;
55+ // Finally, let's run some code.
56+ Box :: from_raw ( main as * mut Box < dyn FnOnce ( ) > ) ( ) ;
5357 }
5458 ptr:: null_mut ( )
5559 }
Original file line number Diff line number Diff line change @@ -5,11 +5,10 @@ use crate::fmt;
55use crate :: io;
66use crate :: mem;
77use crate :: sys:: hermit:: abi;
8+ use crate :: sys:: stack_overflow;
89use crate :: time:: Duration ;
910use core:: u32;
1011
11- use crate :: sys_common:: thread:: * ;
12-
1312pub type Tid = abi:: Tid ;
1413
1514/// Priority of a task
@@ -70,7 +69,11 @@ impl Thread {
7069
7170 extern "C" fn thread_start ( main : usize ) {
7271 unsafe {
73- start_thread ( main as * mut u8 ) ;
72+ // Next, set up our stack overflow handler which may get triggered if we run
73+ // out of stack.
74+ let _handler = stack_overflow:: Handler :: new ( ) ;
75+ // Finally, let's run some code.
76+ Box :: from_raw ( main as * mut Box < dyn FnOnce ( ) > ) ( ) ;
7477 }
7578 }
7679 }
Original file line number Diff line number Diff line change @@ -3,11 +3,9 @@ use crate::ffi::CStr;
33use crate :: io;
44use crate :: mem;
55use crate :: ptr;
6- use crate :: sys:: os ;
6+ use crate :: sys:: { os , stack_overflow } ;
77use crate :: time:: Duration ;
88
9- use crate :: sys_common:: thread:: * ;
10-
119#[ cfg( not( target_os = "l4re" ) ) ]
1210pub const DEFAULT_MIN_STACK_SIZE : usize = 2 * 1024 * 1024 ;
1311#[ cfg( target_os = "l4re" ) ]
@@ -84,7 +82,11 @@ impl Thread {
8482
8583 extern "C" fn thread_start ( main : * mut libc:: c_void ) -> * mut libc:: c_void {
8684 unsafe {
87- start_thread ( main as * mut u8 ) ;
85+ // Next, set up our stack overflow handler which may get triggered if we run
86+ // out of stack.
87+ let _handler = stack_overflow:: Handler :: new ( ) ;
88+ // Finally, let's run some code.
89+ Box :: from_raw ( main as * mut Box < dyn FnOnce ( ) > ) ( ) ;
8890 }
8991 ptr:: null_mut ( )
9092 }
Original file line number Diff line number Diff line change @@ -3,11 +3,9 @@ use crate::ffi::CStr;
33use crate :: io;
44use crate :: mem;
55use crate :: ptr;
6- use crate :: sys:: os ;
6+ use crate :: sys:: { os , stack_overflow } ;
77use crate :: time:: Duration ;
88
9- use crate :: sys_common:: thread:: * ;
10-
119pub const DEFAULT_MIN_STACK_SIZE : usize = 0x40000 ; // 256K
1210
1311pub struct Thread {
@@ -72,7 +70,11 @@ impl Thread {
7270
7371 extern "C" fn thread_start ( main : * mut libc:: c_void ) -> * mut libc:: c_void {
7472 unsafe {
75- start_thread ( main as * mut u8 ) ;
73+ // Next, set up our stack overflow handler which may get triggered if we run
74+ // out of stack.
75+ let _handler = stack_overflow:: Handler :: new ( ) ;
76+ // Finally, let's run some code.
77+ Box :: from_raw ( main as * mut Box < dyn FnOnce ( ) > ) ( ) ;
7678 }
7779 ptr:: null_mut ( )
7880 }
Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ use crate::mem;
44use crate :: ptr;
55use crate :: sys:: c;
66use crate :: sys:: handle:: Handle ;
7- use crate :: sys_common :: thread :: * ;
7+ use crate :: sys :: stack_overflow ;
88use crate :: time:: Duration ;
99
1010use libc:: c_void;
@@ -50,7 +50,11 @@ impl Thread {
5050
5151 extern "system" fn thread_start ( main : * mut c_void ) -> c:: DWORD {
5252 unsafe {
53- start_thread ( main as * mut u8 ) ;
53+ // Next, set up our stack overflow handler which may get triggered if we run
54+ // out of stack.
55+ let _handler = stack_overflow:: Handler :: new ( ) ;
56+ // Finally, let's run some code.
57+ Box :: from_raw ( main as * mut Box < dyn FnOnce ( ) > ) ( ) ;
5458 }
5559 0
5660 }
Original file line number Diff line number Diff line change 11use crate :: env;
22use crate :: sync:: atomic:: { self , Ordering } ;
3- use crate :: sys:: stack_overflow;
43use crate :: sys:: thread as imp;
54
6- #[ allow( dead_code) ]
7- pub unsafe fn start_thread ( main : * mut u8 ) {
8- // Next, set up our stack overflow handler which may get triggered if we run
9- // out of stack.
10- let _handler = stack_overflow:: Handler :: new ( ) ;
11-
12- // Finally, let's run some code.
13- Box :: from_raw ( main as * mut Box < dyn FnOnce ( ) > ) ( )
14- }
15-
165pub fn min_stack ( ) -> usize {
176 static MIN : atomic:: AtomicUsize = atomic:: AtomicUsize :: new ( 0 ) ;
187 match MIN . load ( Ordering :: SeqCst ) {
You can’t perform that action at this time.
0 commit comments