Import waitpid() with interruptible
authorSimon Marlow <marlowsd@gmail.com>
Mon, 1 Oct 2012 10:46:33 +0000 (11:46 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Fri, 25 Jan 2013 20:54:39 +0000 (20:54 +0000)
System/Posix/Process/Common.hsc

index 5a1bed3..e11742a 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI #-}
 #ifdef __GLASGOW_HASKELL__
 {-# LANGUAGE Trustworthy #-}
 #endif
@@ -313,8 +313,13 @@ getProcessStatus block stopped pid =
       _  -> do ps <- readWaitStatus wstatp
               return (Just ps)
 
--- safe, because this call might block
-foreign import ccall safe "waitpid"
+#if __GLASGOW_HASKELL__ < 701
+-- not available prior to 7.1
+#define interruptible safe
+#endif
+
+-- safe/interruptible, because this call might block
+foreign import ccall interruptible "waitpid"
   c_waitpid :: CPid -> Ptr CInt -> CInt -> IO CPid
 
 -- | @'getGroupProcessStatus' blk stopped pgid@ calls @waitpid@,