Portable keyboard signal handling

Simon Marlow simonmarhaskell at gmail.com
Mon Sep 4 05:10:00 EDT 2006

Robert Dockins wrote:
> On Friday 01 September 2006 03:55, Simon Peyton-Jones wrote:
>>| Indeed.  I had to browse the source after finding that the Haddock
>>docs are
>>| essentially useless.  I do have to say, one nice side effect of using
>>| is that one can simply point one's browser at the source repository to
>>| the code.  I've bookmarked http://cvs.haskell.org/darcs   :-)
>>Good idea.  Could you help us improve the documentation by sending darcs
>>patches with Haddock docs in them?  Not necessarily comprehensive: at
>>least recording the bits you discovered, and wished had been in the docs
>>in the first place.
> Well, here's the odd thing; there ought to be meaningful haddock docs already.  
> By that, I mean that there are data declarations and type signatures and such 
> already in the file that haddock should be picking up on.  However, the whole 
> file is protected by a big ifdef:
> module GHC.ConsoleHandler
> #if !defined(mingw32_HOST_OS) && !defined(__HADDOCK__)
> 	where
> import Prelude -- necessary to get dependencies right
> #else /* whole file */
> 	( Handler(..)
> 	, installHandler
> 	, ConsoleEvent(..)
> 	, flushConsole
> 	) where
> ..... rest of file ....
> It looks like the definitions in the file _should_ be visible to haddock, but 
> for some reason they aren't.

The !defined(__HADDOCK__) part was added by me recently, so you have to look in 
the snapshot docs to find the results:


GHC.ConsoleHandler is now included in the documentation, and will be in 6.6.

> Do you have any ideas about the original question?  It looks like RTS trickery 
> is necessary to get this right in general.  Looking at this file in a little 
> more detail, I see calls to 'rts_installHandler', which is surely why this 
> file is in the GHC.* namespace.
> Perhaps 'withControlCHandler' or something like it should go into the 
> libraries somewhere?  I'm not sure this is a function that can be provided 
> without RTS assistance.  It also seems to be about the maximum intersection 
> of the capabilities of Posix signals and of the Win32 console events system.

Right, that would be useful.  However, see this bug:


Ctrl-C doesn't work right on Windows with -threaded, at the moment.  (we hope to 
get to this one for 6.6.1).


More information about the Libraries mailing list