@@ -42,7 +42,7 @@ const WSTOPPED: WaitPidFlag = WUNTRACED;
42
42
pub enum WaitStatus {
43
43
Exited ( pid_t , i8 ) ,
44
44
Signaled ( pid_t , signal:: SigNum , bool ) ,
45
- Stopped ( pid_t , signal:: SigNum ) ,
45
+ Stopped ( pid_t , signal:: SigNum , c_int ) ,
46
46
Continued ( pid_t ) ,
47
47
StillAlive
48
48
}
@@ -51,6 +51,7 @@ pub enum WaitStatus {
51
51
target_os = "android" ) ) ]
52
52
mod status {
53
53
use sys:: signal;
54
+ use libc:: c_int;
54
55
55
56
pub fn exited ( status : i32 ) -> bool {
56
57
( status & 0x7F ) == 0
@@ -80,6 +81,10 @@ mod status {
80
81
( ( status & 0xFF00 ) >> 8 ) as signal:: SigNum
81
82
}
82
83
84
+ pub fn stop_additional ( status : i32 ) -> c_int {
85
+ ( status >> 16 ) as c_int
86
+ }
87
+
83
88
pub fn continued ( status : i32 ) -> bool {
84
89
status == 0xFFFF
85
90
}
@@ -89,6 +94,7 @@ mod status {
89
94
target_os = "ios" ) ) ]
90
95
mod status {
91
96
use sys:: signal;
97
+ use libc:: c_int;
92
98
93
99
const WCOREFLAG : i32 = 0x80 ;
94
100
const WSTOPPED : i32 = 0x7f ;
@@ -105,6 +111,10 @@ mod status {
105
111
( status >> 8 ) as signal:: SigNum
106
112
}
107
113
114
+ pub fn stop_additional ( status : i32 ) -> c_int {
115
+ 0
116
+ }
117
+
108
118
pub fn continued ( status : i32 ) -> bool {
109
119
wstatus ( status) == WSTOPPED && stop_signal ( status) == 0x13
110
120
}
@@ -136,6 +146,7 @@ mod status {
136
146
target_os = "netbsd" ) ) ]
137
147
mod status {
138
148
use sys:: signal;
149
+ use libc:: c_int;
139
150
140
151
const WCOREFLAG : i32 = 0x80 ;
141
152
const WSTOPPED : i32 = 0x7f ;
@@ -152,6 +163,10 @@ mod status {
152
163
( status >> 8 ) as signal:: SigNum
153
164
}
154
165
166
+ pub fn stop_additional ( status : i32 ) -> c_int {
167
+ 0
168
+ }
169
+
155
170
pub fn signaled ( status : i32 ) -> bool {
156
171
wstatus ( status) != WSTOPPED && wstatus ( status) != 0 && status != 0x13
157
172
}
@@ -183,7 +198,7 @@ fn decode(pid : pid_t, status: i32) -> WaitStatus {
183
198
} else if status:: signaled ( status) {
184
199
WaitStatus :: Signaled ( pid, status:: term_signal ( status) , status:: dumped_core ( status) )
185
200
} else if status:: stopped ( status) {
186
- WaitStatus :: Stopped ( pid, status:: stop_signal ( status) )
201
+ WaitStatus :: Stopped ( pid, status:: stop_signal ( status) , status :: stop_additional ( status ) )
187
202
} else {
188
203
assert ! ( status:: continued( status) ) ;
189
204
WaitStatus :: Continued ( pid)
0 commit comments