File tree 6 files changed +30
-26
lines changed
6 files changed +30
-26
lines changed Original file line number Diff line number Diff line change @@ -4,8 +4,8 @@ use crate::io;
4
4
use crate :: mem;
5
5
use crate :: ptr;
6
6
use crate :: sys:: cloudabi:: abi;
7
+ use crate :: sys:: stack_overflow;
7
8
use crate :: sys:: time:: checked_dur2intervals;
8
- use crate :: sys_common:: thread:: * ;
9
9
use crate :: time:: Duration ;
10
10
11
11
pub const DEFAULT_MIN_STACK_SIZE : usize = 2 * 1024 * 1024 ;
@@ -49,7 +49,11 @@ impl Thread {
49
49
50
50
extern "C" fn thread_start ( main : * mut libc:: c_void ) -> * mut libc:: c_void {
51
51
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 ( ) > ) ( ) ;
53
57
}
54
58
ptr:: null_mut ( )
55
59
}
Original file line number Diff line number Diff line change @@ -5,11 +5,10 @@ use crate::fmt;
5
5
use crate :: io;
6
6
use crate :: mem;
7
7
use crate :: sys:: hermit:: abi;
8
+ use crate :: sys:: stack_overflow;
8
9
use crate :: time:: Duration ;
9
10
use core:: u32;
10
11
11
- use crate :: sys_common:: thread:: * ;
12
-
13
12
pub type Tid = abi:: Tid ;
14
13
15
14
/// Priority of a task
@@ -70,7 +69,11 @@ impl Thread {
70
69
71
70
extern "C" fn thread_start ( main : usize ) {
72
71
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 ( ) > ) ( ) ;
74
77
}
75
78
}
76
79
}
Original file line number Diff line number Diff line change @@ -3,11 +3,9 @@ use crate::ffi::CStr;
3
3
use crate :: io;
4
4
use crate :: mem;
5
5
use crate :: ptr;
6
- use crate :: sys:: os ;
6
+ use crate :: sys:: { os , stack_overflow } ;
7
7
use crate :: time:: Duration ;
8
8
9
- use crate :: sys_common:: thread:: * ;
10
-
11
9
#[ cfg( not( target_os = "l4re" ) ) ]
12
10
pub const DEFAULT_MIN_STACK_SIZE : usize = 2 * 1024 * 1024 ;
13
11
#[ cfg( target_os = "l4re" ) ]
@@ -84,7 +82,11 @@ impl Thread {
84
82
85
83
extern "C" fn thread_start ( main : * mut libc:: c_void ) -> * mut libc:: c_void {
86
84
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 ( ) > ) ( ) ;
88
90
}
89
91
ptr:: null_mut ( )
90
92
}
Original file line number Diff line number Diff line change @@ -3,11 +3,9 @@ use crate::ffi::CStr;
3
3
use crate :: io;
4
4
use crate :: mem;
5
5
use crate :: ptr;
6
- use crate :: sys:: os ;
6
+ use crate :: sys:: { os , stack_overflow } ;
7
7
use crate :: time:: Duration ;
8
8
9
- use crate :: sys_common:: thread:: * ;
10
-
11
9
pub const DEFAULT_MIN_STACK_SIZE : usize = 0x40000 ; // 256K
12
10
13
11
pub struct Thread {
@@ -72,7 +70,11 @@ impl Thread {
72
70
73
71
extern "C" fn thread_start ( main : * mut libc:: c_void ) -> * mut libc:: c_void {
74
72
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 ( ) > ) ( ) ;
76
78
}
77
79
ptr:: null_mut ( )
78
80
}
Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ use crate::mem;
4
4
use crate :: ptr;
5
5
use crate :: sys:: c;
6
6
use crate :: sys:: handle:: Handle ;
7
- use crate :: sys_common :: thread :: * ;
7
+ use crate :: sys :: stack_overflow ;
8
8
use crate :: time:: Duration ;
9
9
10
10
use libc:: c_void;
@@ -50,7 +50,11 @@ impl Thread {
50
50
51
51
extern "system" fn thread_start ( main : * mut c_void ) -> c:: DWORD {
52
52
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 ( ) > ) ( ) ;
54
58
}
55
59
0
56
60
}
Original file line number Diff line number Diff line change 1
1
use crate :: env;
2
2
use crate :: sync:: atomic:: { self , Ordering } ;
3
- use crate :: sys:: stack_overflow;
4
3
use crate :: sys:: thread as imp;
5
4
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
-
16
5
pub fn min_stack ( ) -> usize {
17
6
static MIN : atomic:: AtomicUsize = atomic:: AtomicUsize :: new ( 0 ) ;
18
7
match MIN . load ( Ordering :: SeqCst ) {
You can’t perform that action at this time.
0 commit comments