
#13554: Allow the user to provide a C function that is called on each thread the RTS creates before running any Haskell code -------------------------------------+------------------------------------- Reporter: dobenour | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: 8.4.1 Component: Runtime System | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by fendor): Hi, As an API proposal: {{{ data ThreadCallbackHandle data ThreadCallbacks = ThreadCallbacks { threadCreationCb :: IO () , threadDestructionCb :: IO () } -- function calls would be blocking until -- the callbacks have been executed on all threads. registerCallbacks :: ThreadCallbacks -> IO ThreadCallbackHandle unregisterCallbacks :: ThreadCallbackHandle -> IO () }}} In this proposal, one can submit callbacks that are executed on thread creation or thread termination. These callbacks are also executed on every thread that is currently being executed, since it seems impossible to guarantee that no code execution migrates to threads that have not executed the callback functions. When registering new callbacks, the function should block, until it is guaranteed that every thread has executed the new callback function. Several calls to this function should save existing callbacks and execute all callback functions that have been supplied upon thread creation and termination. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13554#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler