File tree 7 files changed +124
-1
lines changed
7 files changed +124
-1
lines changed Original file line number Diff line number Diff line change 144
144
pub si_uid: :: uid_t,
145
145
pub si_status: :: c_int,
146
146
pub si_addr: * mut :: c_void,
147
+ //Requires it to be union for tests
148
+ //pub si_value: ::sigval,
147
149
_pad: [ usize ; 9 ] ,
148
150
}
149
151
@@ -614,6 +616,28 @@ s_no_extra_traits!{
614
616
}
615
617
}
616
618
619
+ impl siginfo_t {
620
+ pub unsafe fn si_addr ( & self ) -> * mut :: c_void {
621
+ self . si_addr
622
+ }
623
+
624
+ pub unsafe fn si_value ( & self ) -> :: sigval {
625
+ #[ repr( C ) ]
626
+ struct siginfo_timer {
627
+ _si_signo : :: c_int ,
628
+ _si_errno : :: c_int ,
629
+ _si_code : :: c_int ,
630
+ _si_pid : :: pid_t ,
631
+ _si_uid : :: uid_t ,
632
+ _si_status : :: c_int ,
633
+ _si_addr : * mut :: c_void ,
634
+ si_value : :: sigval ,
635
+ }
636
+
637
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . si_value
638
+ }
639
+ }
640
+
617
641
cfg_if ! {
618
642
if #[ cfg( libc_union) ] {
619
643
s_no_extra_traits! {
Original file line number Diff line number Diff line change @@ -21,6 +21,16 @@ impl ::Clone for timezone {
21
21
fn clone ( & self ) -> timezone { * self }
22
22
}
23
23
24
+ impl siginfo_t {
25
+ pub unsafe fn si_addr ( & self ) -> * mut :: c_void {
26
+ self . si_addr
27
+ }
28
+
29
+ pub unsafe fn si_value ( & self ) -> :: sigval {
30
+ self . si_value
31
+ }
32
+ }
33
+
24
34
s ! {
25
35
pub struct in_addr {
26
36
pub s_addr: :: in_addr_t,
68
78
pub si_uid: :: uid_t,
69
79
pub si_status: :: c_int,
70
80
pub si_addr: * mut :: c_void,
71
- _pad: [ :: c_int; 12 ] ,
81
+ pub si_value: :: sigval,
82
+ _pad1: :: c_long,
83
+ _pad2: [ :: c_int; 7 ] ,
72
84
}
73
85
74
86
pub struct sigaction {
Original file line number Diff line number Diff line change @@ -9,6 +9,22 @@ pub type mqd_t = ::c_int;
9
9
type __pthread_spin_t = __cpu_simple_lock_nv_t ;
10
10
pub type vm_size_t = :: uintptr_t ;
11
11
12
+ impl siginfo_t {
13
+ pub unsafe fn si_value ( & self ) -> :: sigval {
14
+ #[ repr( C ) ]
15
+ struct siginfo_timer {
16
+ _si_signo : :: c_int ,
17
+ _si_errno : :: c_int ,
18
+ _si_code : :: c_int ,
19
+ __pad1 : :: c_int ,
20
+ _pid : :: pid_t ,
21
+ _uid : :: uid_t ,
22
+ value : :: sigval ,
23
+ }
24
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . value
25
+ }
26
+ }
27
+
12
28
s ! {
13
29
pub struct aiocb {
14
30
pub aio_offset: :: off_t,
Original file line number Diff line number Diff line change @@ -308,6 +308,21 @@ s! {
308
308
}
309
309
}
310
310
311
+ impl siginfo_t {
312
+ pub unsafe fn si_value ( & self ) -> :: sigval {
313
+ #[ repr( C ) ]
314
+ struct siginfo_timer {
315
+ _si_signo : :: c_int ,
316
+ _si_errno : :: c_int ,
317
+ _si_code : :: c_int ,
318
+ _pid : :: pid_t ,
319
+ _uid : :: uid_t ,
320
+ value : :: sigval ,
321
+ }
322
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . value
323
+ }
324
+ }
325
+
311
326
s_no_extra_traits ! {
312
327
pub struct dirent {
313
328
pub d_fileno: :: ino_t,
Original file line number Diff line number Diff line change @@ -2192,3 +2192,18 @@ cfg_if! {
2192
2192
// Unknown target_pointer_width
2193
2193
}
2194
2194
}
2195
+
2196
+ impl siginfo_t {
2197
+ pub unsafe fn si_value ( & self ) -> :: sigval {
2198
+ #[ repr( C ) ]
2199
+ struct siginfo_timer {
2200
+ _si_signo : :: c_int ,
2201
+ _si_errno : :: c_int ,
2202
+ _si_code : :: c_int ,
2203
+ _si_tid : :: c_int ,
2204
+ _si_overrun : :: c_int ,
2205
+ si_sigval : :: sigval ,
2206
+ }
2207
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . si_sigval
2208
+ }
2209
+ }
Original file line number Diff line number Diff line change @@ -193,6 +193,19 @@ impl siginfo_t {
193
193
}
194
194
( * ( self as * const siginfo_t as * const siginfo_sigfault ) ) . si_addr
195
195
}
196
+
197
+ pub unsafe fn si_value ( & self ) -> :: sigval {
198
+ #[ repr( C ) ]
199
+ struct siginfo_timer {
200
+ _si_signo : :: c_int ,
201
+ _si_errno : :: c_int ,
202
+ _si_code : :: c_int ,
203
+ _si_tid : :: c_int ,
204
+ _si_overrun : :: c_int ,
205
+ si_sigval : :: sigval ,
206
+ }
207
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . si_sigval
208
+ }
196
209
}
197
210
198
211
s_no_extra_traits ! {
Original file line number Diff line number Diff line change @@ -13,6 +13,34 @@ pub type fsblkcnt_t = ::c_ulonglong;
13
13
pub type fsfilcnt_t = :: c_ulonglong ;
14
14
pub type rlim_t = :: c_ulonglong ;
15
15
16
+ impl siginfo_t {
17
+ pub unsafe fn si_addr ( & self ) -> * mut :: c_void {
18
+ #[ repr( C ) ]
19
+ struct siginfo_sigfault {
20
+ _si_signo : :: c_int ,
21
+ _si_errno : :: c_int ,
22
+ _si_code : :: c_int ,
23
+ si_addr : * mut :: c_void
24
+ }
25
+
26
+ ( * ( self as * const siginfo_t as * const siginfo_sigfault ) ) . si_addr
27
+ }
28
+
29
+ pub unsafe fn si_value ( & self ) -> :: sigval {
30
+ #[ repr( C ) ]
31
+ struct siginfo_si_value {
32
+ _si_signo : :: c_int ,
33
+ _si_errno : :: c_int ,
34
+ _si_code : :: c_int ,
35
+ _si_timerid : :: c_int ,
36
+ _si_overrun : :: c_int ,
37
+ si_value : :: sigval ,
38
+ }
39
+
40
+ ( * ( self as * const siginfo_t as * const siginfo_si_value ) ) . si_value
41
+ }
42
+ }
43
+
16
44
s ! {
17
45
pub struct aiocb {
18
46
pub aio_fildes: :: c_int,
You can’t perform that action at this time.
0 commit comments