From 04d2f296a991ebcb2d86f8c5c753597f40748a0e Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jackpot51@gmail.com>
Date: Fri, 3 Mar 2023 19:58:05 -0700
Subject: [PATCH] Fix for epoll on i686 redox

---
 src/header/sys_epoll/cbindgen.toml |  1 +
 src/header/sys_epoll/mod.rs        | 10 +++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/header/sys_epoll/cbindgen.toml b/src/header/sys_epoll/cbindgen.toml
index 45aac6c16..af85975df 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 3cae6cfa6..831d6dca0 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)
-- 
GitLab