diff --git a/src/header/sys_epoll/cbindgen.toml b/src/header/sys_epoll/cbindgen.toml index 45aac6c16e7792574f92ce1e4ccf3f9d5cb95a1b..af85975df7fb00a5ab754827b360d4aa897311de 100644 --- a/src/header/sys_epoll/cbindgen.toml +++ b/src/header/sys_epoll/cbindgen.toml @@ -8,6 +8,7 @@ cpp_compat = true [defines] "target_os=linux" = "__linux__" "target_os=redox" = "__redox__" +"target_pointer_width=64" = "__LP64__" [enum] prefix_with_name = true diff --git a/src/header/sys_epoll/mod.rs b/src/header/sys_epoll/mod.rs index 3cae6cfa684d1469de30fe6e2befcc4610cfd67f..831d6dca03addf51b194c1134e721b9a289c783e 100644 --- a/src/header/sys_epoll/mod.rs +++ b/src/header/sys_epoll/mod.rs @@ -35,6 +35,7 @@ impl Default for epoll_data { } } +#[cfg(all(target_os = "redox", target_pointer_width = "64"))] #[repr(C)] #[derive(Clone, Copy, Default)] // This will match in size with syscall::Event (24 bytes on 64-bit @@ -45,10 +46,17 @@ pub struct epoll_event { // 4 automatic alignment bytes pub data: epoll_data, // 8 bytes - #[cfg(target_os = "redox")] pub _pad: u64, // 8 bytes } +#[cfg(not(all(target_os = "redox", target_pointer_width = "64")))] +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct epoll_event { + pub events: u32, + pub data: epoll_data, +} + #[no_mangle] pub extern "C" fn epoll_create(_size: c_int) -> c_int { epoll_create1(0)