[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Oskit drivers for GNU Mach 1.x

From: Gianluca Guida
Subject: Oskit drivers for GNU Mach 1.x
Date: Wed, 8 Jun 2005 18:43:58 +0200

Hi all,

I've been recently working on GNU Mach 1 branch to port oskit drivers
and remove the linux glue.

THIS IS NOT ANOTHER OSKIT-MACH. It is different. Differently from
oskit-mach in this tree only the linux_dev component of oskit is used,
and it is added at linking time. Furthermore, in the sources there is
no OSKit code; instead, a COM component manager and the oskit_osenv
interface have been natively created.

IMHO this is cleaner and more powerful than oskit-mach, since it save
us from all the OSKit's internal nightmares, inconsistencies and

At the moment I've got my tree to probe both network and block
devices,  but I've created ds_routines linking only for block devices,
so network drivers are ignored.
Actually I could not have a boot though, since the code I am using to
recognize partitions that I've found in scsi/disk_label.c gives me
funny numbers so I had to disable partitions. I think anyways that it
would be possible to use an IDE ATAPI cdrom as root to test it out,
but I do not own cdrom devices.

You can found the sources here: 

(special thanks to Alfred M. Szmidt for hosting the sources!)

The tarball contains both oskit and gnumach tree. The oskit tree comes
from savannah's unofficial oskit CVS with few modifications:

- the entropy driver has been disabled for the moment, since it
ignores the COM-based architecture of OSKit.
- minor bugfixes, like adding an include in linux/dev/timer.c
- ide and floppy glue now call the disk device respectively "hd" and
"fd", to help lookup of devices.
- Lot of debug printf's that I forgot.

GNU Mach, of course, has been more seriously modified:

- added a subdirectory, called oskitcom/, and some architecture
dependent stub in i386/i386at/;
- added native support for PCI bios register reading in GNU Mach;

- [This should IMHO be actually ported even in the mainline GNU Mach
1.x] vm_resident.c now contains a poor man's multizone (DMA, normal)
multiple pages allocator, done with code collected in the same file.
This actually was needed, since current GNU Mach pre-allocs at init
time a fixed amount of DMA-memory for the whole linux-glue memory
needs (and it panics if the memory is insufficient). This allocator
solves this, giving to drivers only the memory they need.

- Lot of debug printf's that I forgot. :-)

Please note, if you are interested in debugging, that there are some
particularly weak parts:

- osenv_mem allocator is REALLY dumb, it allocates a page even for a
small structure. This can be easily fixed, of course.
- Some inconsistency to fix in osenv_mem memory mapper.

I would be very interested to ear from people who hacked the Mach much
more than me what they think about this.
All comments except for easy truths (L4 is the future) and easy lies
(GNUMach is dead) will be greatly appreciated, too! :-)

Thanks in advance,

It was a type of people I did not know, I found them very strange and
they did not inspire confidence at all. Later I learned that I had been
introduced to electronic engineers.
                                                           E. W. Dijkstra

reply via email to

[Prev in Thread] Current Thread [Next in Thread]