File tree 9 files changed +132
-2
lines changed 9 files changed +132
-2
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,16 @@ impl ::Clone for timezone {
44
44
fn clone ( & self ) -> timezone { * self }
45
45
}
46
46
47
+ impl siginfo_t {
48
+ pub unsafe fn si_addr ( & self ) -> * mut :: c_void {
49
+ self . si_addr
50
+ }
51
+
52
+ pub unsafe fn si_value ( & self ) -> :: sigval {
53
+ self . si_value
54
+ }
55
+ }
56
+
47
57
s ! {
48
58
pub struct ip_mreq {
49
59
pub imr_multiaddr: in_addr,
144
154
pub si_uid: :: uid_t,
145
155
pub si_status: :: c_int,
146
156
pub si_addr: * mut :: c_void,
147
- _pad: [ usize ; 9 ] ,
157
+ pub si_value: :: sigval,
158
+ pub si_band: :: c_long,
159
+ _pad: [ usize ; 7 ] ,
148
160
}
149
161
150
162
pub struct sigaction {
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
+ _pad: [ :: c_int; 8 ] ,
72
83
}
73
84
74
85
pub struct sigaction {
Original file line number Diff line number Diff line change @@ -25,6 +25,12 @@ impl ::Clone for sem {
25
25
}
26
26
27
27
s ! {
28
+ pub struct _timer {
29
+ _pid: :: pid_t,
30
+ _uid: :: uid_t,
31
+ _value: :: sigval,
32
+ }
33
+
28
34
pub struct sigaction {
29
35
pub sa_sigaction: :: sighandler_t,
30
36
pub sa_mask: :: sigset_t,
Original file line number Diff line number Diff line change @@ -9,6 +9,24 @@ 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
+ self . timer ( ) . _value
15
+ }
16
+
17
+ pub unsafe fn timer ( & self ) -> :: _timer {
18
+ #[ repr( C ) ]
19
+ struct siginfo_timer {
20
+ _si_signo : :: c_int ,
21
+ _si_errno : :: c_int ,
22
+ _si_code : :: c_int ,
23
+ __pad1 : :: c_int ,
24
+ timer : :: _timer ,
25
+ }
26
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . timer
27
+ }
28
+ }
29
+
12
30
s ! {
13
31
pub struct aiocb {
14
32
pub aio_offset: :: off_t,
Original file line number Diff line number Diff line change @@ -308,6 +308,23 @@ s! {
308
308
}
309
309
}
310
310
311
+ impl siginfo_t {
312
+ pub unsafe fn si_value ( & self ) -> :: sigval {
313
+ self . timer ( ) . _value
314
+ }
315
+
316
+ pub unsafe fn timer ( & self ) -> :: _timer {
317
+ #[ repr( C ) ]
318
+ struct siginfo_timer {
319
+ _si_signo : :: c_int ,
320
+ _si_errno : :: c_int ,
321
+ _si_code : :: c_int ,
322
+ timer : :: _timer ,
323
+ }
324
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . timer
325
+ }
326
+ }
327
+
311
328
s_no_extra_traits ! {
312
329
pub struct dirent {
313
330
pub d_fileno: :: ino_t,
Original file line number Diff line number Diff line change @@ -2192,3 +2192,20 @@ 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
+ self . timer ( ) . si_sigval
2199
+ }
2200
+
2201
+ pub unsafe fn timer ( & self ) -> :: _timer {
2202
+ #[ repr( C ) ]
2203
+ struct siginfo_timer {
2204
+ _si_signo : :: c_int ,
2205
+ _si_errno : :: c_int ,
2206
+ _si_code : :: c_int ,
2207
+ timer : :: _timer ,
2208
+ }
2209
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . timer
2210
+ }
2211
+ }
Original file line number Diff line number Diff line change @@ -193,6 +193,21 @@ 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
+ self . timer ( ) . si_sigval
199
+ }
200
+
201
+ pub unsafe fn timer ( & self ) -> :: _timer {
202
+ #[ repr( C ) ]
203
+ struct siginfo_timer {
204
+ _si_signo : :: c_int ,
205
+ _si_errno : :: c_int ,
206
+ _si_code : :: c_int ,
207
+ timer : :: _timer ,
208
+ }
209
+ ( * ( self as * const siginfo_t as * const siginfo_timer ) ) . timer
210
+ }
196
211
}
197
212
198
213
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,
Original file line number Diff line number Diff line change @@ -13,6 +13,12 @@ impl ::Clone for timezone {
13
13
}
14
14
15
15
s ! {
16
+ pub struct _timer {
17
+ pub si_tid: :: c_int,
18
+ pub si_overrun: :: c_int,
19
+ pub si_sigval: :: sigval,
20
+ }
21
+
16
22
pub struct in_addr {
17
23
pub s_addr: :: in_addr_t,
18
24
}
You can’t perform that action at this time.
0 commit comments