diff --git a/src/unix/mod.rs b/src/unix/mod.rs index d12b9be8c856..c4f58466b4da 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -43,6 +43,27 @@ missing! { } pub type locale_t = *mut c_void; +s_no_extra_traits! { + pub union sigval { + pub sival_ptr: *mut c_void, + pub sival_int: c_int, + } +} + +impl hash::Hash for sigval { + fn hash(&self, state: &mut H) { + state.write_usize(unsafe { self.sival_ptr } as usize); + } +} + +impl ::core::cmp::PartialEq for sigval { + fn eq(&self, other: &Self) -> bool { + unsafe { self.sival_ptr == other.sival_ptr } + } +} + +impl ::core::cmp::Eq for sigval {} + s! { pub struct group { pub gr_name: *mut c_char,