Home   Info   DevZone   Wiki  
UsersWeb  |  MainWeb  |  InfoWeb  |  DevZoneWeb  |  SupportWeb
TimTaylorKernelWork ] [ not logged in ] [ Web: Imported ] goto:  options
[ get info on or edit ] login or new user ] [ list of topics, hubs & nodes, or recent changes ]

_please do not edit this page unless you are TimTaylor_

My Kernel spooge area

Porting Kaffe as JOS Kernel:

Steve Early steve@greenend.org.uk Kaffe guru, boot sector
John Morrison jm@mak.com systems programming guru
Ray Shpeley rays@switchtech.net PowerPC port
Tim Taylor tim.taylor@iname.com Intel x86 port


What are you doing? We're trying to make a Kernel for JOS that supports the Java 1.1 Platform without an underlying OS.

Why port Kaffe? You should really ask each one of us why. In my case, I discovered that my lack of systems programming experienced left me incapable of making intelligent decisions or recommendations about what the JOS Kernel should be. I decided to hop on board with Steve Early, who was already beginning work on porting Kaffe.

But what about Feature X? A common concern has been that the JOS Kernel will inherit some bad traits if it originates from Kaffe. This might be true, I couldn't tell you. There are alot of features JOS Members wish to see in the Kernel, but until I take a shot at something I believe I can achieve, I can't worry about adding Feature X to the Kernel.

I've also stated that I consider porting Kaffe to be a learning experience aimed at teaching me what the JOS Kernel should really be. With that in mind, it's very likely that when I'm done, I'll revist the Kernel from scratch.

How can I help? Well, I'm kind of the defacto contact for this kernel group, so email me. We're looking for all the help me can get. If you don't want to take a bite out of the Kernel, there are some device drivers we'll eventually need, like keyboard, mouse, and video.


porting Kaffe to bare machine (from Steve)
  • change gc_heap_initialise() in gc-mem.c to use memory from the end of the loaded kernel image to the top of physical memory [trivial]
  • change findInJar.c to search for classes in a zipfile image in memory [trivial]
  • modify thread-internal.c to use a periodic interrupt for timing rather than alarm signals. Remove all of the code used to handle threads blocked on file descriptors, etc.; threads will only be able to block on mutexes.
  • add code to turn incoming interrupts into signals on a [set of] condition variables. That way drivers can block while waiting for an interrupt.
  • write native methods allowing access to physical/virtual address spaces, the x86 IO address space, etc.
  • ditch most of the rest of the native methods; in a Java OS the things that they do will be implemented directly in Java.




Content of these pages are owned and copyrighted by the poster.
Hosted by: