Switch to manual trait impls for sigevent
sigevent structs on most platforms have padding or unused fields. Rather than display those in the Debug impl by deriving it, manually implement all extra_traits instead ignoring those fields.
This commit is contained in:
parent
6985986c3b
commit
7c265919ec
@ -432,15 +432,6 @@ s! {
|
||||
pub int_n_sign_posn: ::c_char,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_value: ::sigval,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_notify_function: fn(::sigval),
|
||||
pub sigev_notify_attributes: *mut pthread_attr_t,
|
||||
pub __pad: [::c_char; 56 - 3 * 8 /* 8 == sizeof(long) */],
|
||||
}
|
||||
|
||||
pub struct rlimit64 {
|
||||
pub rlim_cur: rlim64_t,
|
||||
pub rlim_max: rlim64_t,
|
||||
@ -962,6 +953,15 @@ s_no_extra_traits! {
|
||||
pub nl_pid: u32,
|
||||
pub nl_groups: u32
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_value: ::sigval,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_notify_function: fn(::sigval),
|
||||
pub sigev_notify_attributes: *mut pthread_attr_t,
|
||||
pub __pad: [::c_char; 56 - 3 * 8 /* 8 == sizeof(long) */],
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -1255,6 +1255,39 @@ cfg_if! {
|
||||
self.nl_groups.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_value == other.sigev_value
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_notify_function == other.sigev_notify_function
|
||||
&& self.sigev_notify_attributes
|
||||
== other.sigev_notify_attributes
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_notify_function", &self.sigev_notify_function)
|
||||
.field("sigev_notify_attributes",
|
||||
&self.sigev_notify_attributes)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_notify_function.hash(state);
|
||||
self.sigev_notify_attributes.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -287,14 +287,6 @@ s! {
|
||||
pub int_n_sign_posn: ::c_char,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused1: *mut ::c_void, //actually a function pointer
|
||||
pub sigev_notify_attributes: *mut ::pthread_attr_t
|
||||
}
|
||||
|
||||
pub struct proc_taskinfo {
|
||||
pub pti_virtual_size: u64,
|
||||
pub pti_resident_size: u64,
|
||||
@ -612,6 +604,14 @@ s_no_extra_traits!{
|
||||
pub ut_host: [::c_char; _UTX_HOSTSIZE],
|
||||
ut_pad: [u32; 16],
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused1: *mut ::c_void, //actually a function pointer
|
||||
pub sigev_notify_attributes: *mut ::pthread_attr_t
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -1159,6 +1159,39 @@ cfg_if! {
|
||||
self.ut_pad.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_value == other.sigev_value
|
||||
&& self.sigev_notify_attributes
|
||||
== other.sigev_notify_attributes
|
||||
}
|
||||
}
|
||||
|
||||
impl Eq for sigevent {}
|
||||
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_notify_attributes",
|
||||
&self.sigev_notify_attributes)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_notify_attributes.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,19 +70,6 @@ s! {
|
||||
pub mq_curmsgs: ::c_long,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
// The union is 8-byte in size, so it is aligned at a 8-byte offset.
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: ::c_int,
|
||||
pub sigev_signo: ::c_int, //actually a union
|
||||
// pad the union
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused2: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused3: *mut ::c_void //actually a function pointer
|
||||
}
|
||||
|
||||
pub struct statvfs {
|
||||
pub f_bsize: ::c_ulong,
|
||||
pub f_frsize: ::c_ulong,
|
||||
@ -234,6 +221,20 @@ s_no_extra_traits! {
|
||||
pub f_asyncreads: ::c_long,
|
||||
pub f_mntfromname: [::c_char; 90],
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
// The union is 8-byte in size, so it is aligned at a 8-byte offset.
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: ::c_int,
|
||||
pub sigev_signo: ::c_int, //actually a union
|
||||
// pad the union
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused2: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused3: *mut ::c_void //actually a function pointer
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -408,6 +409,31 @@ cfg_if! {
|
||||
self.f_mntfromname.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_value == other.sigev_value
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_value.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,18 +46,6 @@ s! {
|
||||
pub ip6: *mut ::in6_addr,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
//The rest of the structure is actually a union. We expose only
|
||||
//sigev_notify_thread_id because it's the most useful union member.
|
||||
pub sigev_notify_thread_id: ::lwpid_t,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: ::c_int,
|
||||
__unused2: [::c_long; 7]
|
||||
}
|
||||
|
||||
pub struct statvfs {
|
||||
pub f_bavail: ::fsblkcnt_t,
|
||||
pub f_bfree: ::fsblkcnt_t,
|
||||
@ -151,6 +139,18 @@ s_no_extra_traits! {
|
||||
pub mq_curmsgs: ::c_long,
|
||||
__reserved: [::c_long; 4]
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
//The rest of the structure is actually a union. We expose only
|
||||
//sigev_notify_thread_id because it's the most useful union member.
|
||||
pub sigev_notify_thread_id: ::lwpid_t,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: ::c_int,
|
||||
__unused2: [::c_long; 7]
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -274,6 +274,36 @@ cfg_if! {
|
||||
self.mq_curmsgs.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_value == other.sigev_value
|
||||
&& self.sigev_notify_thread_id
|
||||
== other.sigev_notify_thread_id
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_notify_thread_id",
|
||||
&self.sigev_notify_thread_id)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_notify_thread_id.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,14 +46,6 @@ s! {
|
||||
pub mq_curmsgs: ::c_long,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused1: *mut ::c_void, //actually a function pointer
|
||||
pub sigev_notify_attributes: *mut ::c_void
|
||||
}
|
||||
|
||||
pub struct sigset_t {
|
||||
__bits: [u32; 4],
|
||||
}
|
||||
@ -356,6 +348,14 @@ s_no_extra_traits! {
|
||||
__ss_pad2: i64,
|
||||
__ss_pad3: [u8; 112],
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused1: *mut ::c_void, //actually a function pointer
|
||||
pub sigev_notify_attributes: *mut ::c_void
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -658,6 +658,36 @@ cfg_if! {
|
||||
self.__ss_pad3.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_value == other.sigev_value
|
||||
&& self.sigev_notify_attributes
|
||||
== other.sigev_notify_attributes
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_notify_attributes",
|
||||
&self.sigev_notify_attributes)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_notify_attributes.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -287,14 +287,6 @@ s! {
|
||||
sa_userdata: *mut ::c_void,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused1: *mut ::c_void, // actually a function pointer
|
||||
pub sigev_notify_attributes: *mut ::pthread_attr_t,
|
||||
}
|
||||
|
||||
pub struct sem_t {
|
||||
pub se_type: i32,
|
||||
pub se_named_id: i32, // this is actually a union
|
||||
@ -329,6 +321,14 @@ s_no_extra_traits! {
|
||||
pub d_reclen: ::c_ushort,
|
||||
pub d_name: [::c_char; 1024], // Max length is _POSIX_PATH_MAX
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
__unused1: *mut ::c_void, // actually a function pointer
|
||||
pub sigev_notify_attributes: *mut ::pthread_attr_t,
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -438,6 +438,36 @@ cfg_if! {
|
||||
self.d_name.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_value == other.sigev_value
|
||||
&& self.sigev_notify_attributes
|
||||
== other.sigev_notify_attributes
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_notify_attributes",
|
||||
&self.sigev_notify_attributes)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_notify_attributes.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -135,19 +135,6 @@ s! {
|
||||
pub int_n_sign_posn: ::c_char,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_value: ::sigval,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_notify: ::c_int,
|
||||
// Actually a union. We only expose sigev_notify_thread_id because it's
|
||||
// the most useful member
|
||||
pub sigev_notify_thread_id: ::c_int,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: [::c_int; 11],
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
__unused1: [::c_int; 12]
|
||||
}
|
||||
|
||||
pub struct in_pktinfo {
|
||||
pub ipi_ifindex: ::c_int,
|
||||
pub ipi_spec_dst: ::in_addr,
|
||||
@ -242,6 +229,19 @@ s_no_extra_traits!{
|
||||
pub machine: [::c_char; 65],
|
||||
pub domainname: [::c_char; 65]
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_value: ::sigval,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_notify: ::c_int,
|
||||
// Actually a union. We only expose sigev_notify_thread_id because it's
|
||||
// the most useful member
|
||||
pub sigev_notify_thread_id: ::c_int,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: [::c_int; 11],
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
__unused1: [::c_int; 12]
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -387,6 +387,36 @@ cfg_if! {
|
||||
self.domainname.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_value == other.sigev_value
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_notify_thread_id
|
||||
== other.sigev_notify_thread_id
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_notify_thread_id",
|
||||
&self.sigev_notify_thread_id)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_notify_thread_id.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -211,15 +211,6 @@ s! {
|
||||
pub sa_mask: sigset_t,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
pub ss_sp: *mut ::c_void,
|
||||
pub sigev_notify_attributes: *const ::pthread_attr_t,
|
||||
__sigev_pad2: ::c_int,
|
||||
}
|
||||
|
||||
pub struct stack_t {
|
||||
pub ss_sp: *mut ::c_void,
|
||||
pub ss_size: ::size_t,
|
||||
@ -401,6 +392,15 @@ s_no_extra_traits! {
|
||||
pub sdl_slen: ::c_uchar,
|
||||
pub sdl_data: [::c_char; 244],
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_notify: ::c_int,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_value: ::sigval,
|
||||
pub ss_sp: *mut ::c_void,
|
||||
pub sigev_notify_attributes: *const ::pthread_attr_t,
|
||||
__sigev_pad2: ::c_int,
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -636,6 +636,40 @@ cfg_if! {
|
||||
self.sdl_data.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_value == other.sigev_value
|
||||
&& self.ss_sp == other.ss_sp
|
||||
&& self.sigev_notify_attributes
|
||||
== other.sigev_notify_attributes
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("ss_sp", &self.ss_sp)
|
||||
.field("sigev_notify_attributes",
|
||||
&self.sigev_notify_attributes)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_value.hash(state);
|
||||
self.ss_sp.hash(state);
|
||||
self.sigev_notify_attributes.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,19 +146,6 @@ s! {
|
||||
pub int_n_sign_posn: ::c_char,
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_value: ::sigval,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_notify: ::c_int,
|
||||
// Actually a union. We only expose sigev_notify_thread_id because it's
|
||||
// the most useful member
|
||||
pub sigev_notify_thread_id: ::c_int,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: [::c_int; 11],
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
__unused1: [::c_int; 12]
|
||||
}
|
||||
|
||||
pub struct rlimit64 {
|
||||
pub rlim_cur: rlim64_t,
|
||||
pub rlim_max: rlim64_t,
|
||||
@ -368,6 +355,19 @@ s_no_extra_traits! {
|
||||
pub nl_pid: u32,
|
||||
pub nl_groups: u32
|
||||
}
|
||||
|
||||
pub struct sigevent {
|
||||
pub sigev_value: ::sigval,
|
||||
pub sigev_signo: ::c_int,
|
||||
pub sigev_notify: ::c_int,
|
||||
// Actually a union. We only expose sigev_notify_thread_id because it's
|
||||
// the most useful member
|
||||
pub sigev_notify_thread_id: ::c_int,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
__unused1: [::c_int; 11],
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
__unused1: [::c_int; 12]
|
||||
}
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
@ -424,6 +424,36 @@ cfg_if! {
|
||||
self.nl_groups.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for sigevent {
|
||||
fn eq(&self, other: &sigevent) -> bool {
|
||||
self.sigev_value == other.sigev_value
|
||||
&& self.sigev_signo == other.sigev_signo
|
||||
&& self.sigev_notify == other.sigev_notify
|
||||
&& self.sigev_notify_thread_id
|
||||
== other.sigev_notify_thread_id
|
||||
}
|
||||
}
|
||||
impl Eq for sigevent {}
|
||||
impl ::fmt::Debug for sigevent {
|
||||
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
|
||||
f.debug_struct("sigevent")
|
||||
.field("sigev_value", &self.sigev_value)
|
||||
.field("sigev_signo", &self.sigev_signo)
|
||||
.field("sigev_notify", &self.sigev_notify)
|
||||
.field("sigev_notify_thread_id",
|
||||
&self.sigev_notify_thread_id)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
impl ::hash::Hash for sigevent {
|
||||
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
|
||||
self.sigev_value.hash(state);
|
||||
self.sigev_signo.hash(state);
|
||||
self.sigev_notify.hash(state);
|
||||
self.sigev_notify_thread_id.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user