diff options
Diffstat (limited to 'testsuite/tests/rts/RestartEventLogging.hs')
-rw-r--r-- | testsuite/tests/rts/RestartEventLogging.hs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/testsuite/tests/rts/RestartEventLogging.hs b/testsuite/tests/rts/RestartEventLogging.hs new file mode 100644 index 0000000000..5c532895e8 --- /dev/null +++ b/testsuite/tests/rts/RestartEventLogging.hs @@ -0,0 +1,35 @@ +{-# LANGUAGE ForeignFunctionInterface #-} + +import System.IO + +import Control.Concurrent +import Control.Monad (forever, void) +import GHC.Conc + + +-- Test that the start/end/restartEventLog interface works as expected. +main :: IO () +main = do + + -- + -- Start other threads to generate some event log events. + -- + + let loop f = void $ forkIO $ forever (f >> yield) + + -- start lots of short lived threads + loop (forkIO $ yield) + + -- sparks + loop (let x = 1 + (1 :: Int) in return (par x (sum [0,1,2,3,x]))) + + -- + -- Try restarting event logging a few times. + -- + + putStrLn "Restarting eventlog..." + hFlush stdout + c_restart_eventlog + +foreign import ccall safe "c_restart_eventlog" + c_restart_eventlog :: IO () |