summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Somers <asomers@gmail.com>2016-11-10 21:38:29 -0700
committerAlan Somers <asomers@gmail.com>2016-11-10 21:38:29 -0700
commit0ac31d2b9fd2bf283c9db6be01b40e0efcecb010 (patch)
treec82551d9c6b75a389877356fdd8163fb68028f24
parent853a7db630af188509dd2be1c542eb8d498818b8 (diff)
downloadnix-0ac31d2b9fd2bf283c9db6be01b40e0efcecb010.zip
Change KEvent to treat udata as an intptr_t instead of a uintptr_t.
This matches NetBSD's C definitions. Other operating systems define it as void*, despite not really being a pointer, but none actually define it as uintptr_t. Better to be right on NetBSD and wrong everywhere else than wrong everywhere. Plus, it's what mio expects.
-rw-r--r--src/sys/event.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/sys/event.rs b/src/sys/event.rs
index 68528c9e..0ada5bd6 100644
--- a/src/sys/event.rs
+++ b/src/sys/event.rs
@@ -193,14 +193,14 @@ pub fn kqueue() -> Result<RawFd> {
// KEvent can't derive Send because on some operating systems, udata is defined
-// as a void*. However, KEvent's public API always treats udata as a uintptr_t,
+// as a void*. However, KEvent's public API always treats udata as an intptr_t,
// which is safe to Send.
unsafe impl Send for KEvent {
}
impl KEvent {
pub fn new(ident: uintptr_t, filter: EventFilter, flags: EventFlag,
- fflags:FilterFlag, data: intptr_t, udata: uintptr_t) -> KEvent {
+ fflags:FilterFlag, data: intptr_t, udata: intptr_t) -> KEvent {
KEvent { kevent: libc::kevent {
ident: ident,
filter: filter as type_of_event_filter,
@@ -231,8 +231,8 @@ impl KEvent {
self.kevent.data
}
- pub fn udata(&self) -> uintptr_t {
- self.kevent.udata as uintptr_t
+ pub fn udata(&self) -> intptr_t {
+ self.kevent.udata as intptr_t
}
}
@@ -282,7 +282,7 @@ pub fn ev_set(ev: &mut KEvent,
filter: EventFilter,
flags: EventFlag,
fflags: FilterFlag,
- udata: uintptr_t) {
+ udata: intptr_t) {
ev.kevent.ident = ident as uintptr_t;
ev.kevent.filter = filter as type_of_event_filter;
@@ -294,7 +294,7 @@ pub fn ev_set(ev: &mut KEvent,
#[test]
fn test_struct_kevent() {
- let udata : uintptr_t = 12345;
+ let udata : intptr_t = 12345;
let expected = libc::kevent{ident: 0xdeadbeef,
filter: libc::EVFILT_READ,