diff --git a/src/header/signal/mod.rs b/src/header/signal/mod.rs
index 8bb133bb01733ddb6a33d4e246ef15b1a99649b5..d3495b50906be9664c4b3ab253346b2f6983f642 100644
--- a/src/header/signal/mod.rs
+++ b/src/header/signal/mod.rs
@@ -131,9 +131,21 @@ pub extern "C" fn siginterrupt(sig: c_int, flag: c_int) -> c_int {
     unimplemented!();
 }
 
-// #[no_mangle]
+#[no_mangle]
 pub extern "C" fn sigismember(set: *const sigset_t, signo: c_int) -> c_int {
-    unimplemented!();
+    if signo <= 0 || signo as usize > NSIG {
+        unsafe {
+            platform::errno = errno::EINVAL;
+        }
+        return -1;
+    }
+
+    if let Some(set) = unsafe { (set as *mut SigSet).as_mut() } {
+        if set.contains(signo as usize - 1) {
+            return 1;
+        }
+    }
+    0
 }
 
 extern "C" {