K42

overview

From the K42 site:

The K42 group is developing a new high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors. We are targeting next generation servers ranging from small-scale multiprocessors that we expect will become ubiquitous, to very large-scale non-symmetric multiprocessors that are becoming increasingly important in both commercial and technical environments.

More here.

patches

patchdescriptionstatusdate
configurable-bind-mounts.patch Add a parameter (K42_NFS_BINDINGS) to specify bindmounts. Experimental Thu Jan 6 09:57:41 WST 2005
gcc-3.4-kfs.patch Extend gcc 3.4 compatibility to KFS code Committed Fri Nov 5 12:24:05 EST 2004
gcc-3.4.patch Allow k42 to be built with gcc 3.4. Committed Fri Oct 8 12:49:28 CDT 2004
moduleloader.patch Add a dynamic kernel module loader, with userspace and build tools Committed Tue Jun 7 14:45:57 EST 2005
offsetof-redefinition.patch Temporary fix for redefinition of offsetof from gcc headers. Temporary Thu Aug 5 16:05:29 EST 2004
pem-lib.patch install pemGenHdrs.py without extension Development Thu Aug 5 16:05:29 EST 2004
single-step-mode.patch Add single-step-mode command to powerpc64-linux-gdb External Project Fri Aug 20 15:10:34 EST 2004
syncservice.patch Implement a fsync daemon to flush file-backed pages every 30s Development Wed May 18 11:59:18 EST 2005
thinwire-setRTS.patch Set RTS bit on serial line before select() Committed Wed Aug 18 16:53:06 EST 2004
thinwire-singlespeed.patch Don't change thinwire serial speed Testing Tue Feb 15 14:31:19 EST 2005
tools-x86_64-compat.patch Allow k42 to be built on an x64_86 arch Testing Tue Feb 1 11:12:26 EST 2005

Device-driven I/O

Presented at the 2006 linux.conf.au, these slides (PDF, 887kB) show some of the recent work I've been doing in conjunction with the IBM Research team.

dynamic module loading

The moduleloader isn't in CVS yet, you'll need to apply moduleloader.patch.

There's an Object.C file in the usr/moduleloader/ directory - this is a tiny sample module, and can be loaded into the k42 kernel:

cd /kbin
./ModuleLoader Object.so
you need to cd to /kbin before running the module loader - it needs boot_image.map to be in the current directory

todo

A couple of things that need work:

papers

Andrew Baumann has been driving the research on dynamic update, and has presented the folowing papers:

gcc 3.4 compatibilty

Almost all of the 3.4-related problems have been fixed in gcc-3.4.patch (which has been comitted to CVS), but there are still a few issues:

The newer gcc-3.4-kfs.patch adds gcc-3.4 support to KFS code

resolving k42 problems

I've started to put together some documentation about problems Chris or I have had with building, running and testing K42. You can find it here.

toolchain

I've been building k42 cross-toolchains using the buildtoolchain scripts. However, something using the crosstool system would be much better. More to come...