House

I've been hacking on House for the last year or so. My primary work is two-fold: to integrate Peng Li's work on Lightweight Concurrency, and to build a priority-based scheduler atop the framework. In order to do that, I also had to update House to run on GHC 6.8.2.

Thanks are due to my advisor, Andrew Tolmach for incredible help and direction, to Adam Wick for help porting House to GHC 6.8.2, to Peng Li for supplying a snapshot of his lightweight concurrency code, and to Simon Marlow for his amazing help with some tricky RTS issues.

Snapshots

Here you can find some snapshots of my work. I no longer actively work on the vanilla House branch, but would be glad to assist with it.

  • House 0.8.93 (vanilla House ported to GHC 6.8.2) [January 22nd, 2009]
    ...or, a pre-built floppy for use in qemu...or ISO image.
    Changes: A bug fix for userland processes (courtesy of Wei Hu) and Makefile fixes.
  • Outdated: House 0.8.92 [November 10th, 2008]—now builds with GCC 4.3
  • Outdated: House 0.8.91 [October 1st, 2008]

Build Advice

To build House, run `make boot` to download, unpack, and patch GHC, then simply run `make floppy.' This should create a qemu compatible 2.88MB floppy disk image called House.flp. You can also run `make cdrom' to build a bootable ISO image.

I recommend building on a modern 32-bit Linux system. House does not build on 64-bit linux directly; you'll need to use a 32-bit chroot. You'll also need to install genext2fs.

If you want to build the userspace programs yourself, change to the kernel/user folder and run `make' and `make install'. I've included those in the tarball since I had trouble with them in the past.

Also, if you change various bits of GHC, you'll need to do clean builds:

  • Compiler—in ghc-6.8.2, run `make clean && make stage1`; in kernel, run `make clean`, at top-level, run `make floppy`.
  • Libraries—in ghc-6.8.2/libraries, run `make rebuild.library.base` (or whichever library); in kernel, run `make clean`, at top-level, run `make floppy`.
  • RTS—at top-level, run rm kernel/house && make floppy.

If you have any questions, don't hesitate to contact me at the email address below (just replace it with proper punctuation.)

kennyg .:. cs : pdx : edu