Hi,
I've finally more or less finished unifying the rumprun platforms -- I
think I started talking about it maybe 6 months ago, so it took a while.
The last unified bit was the scheduler, which was a surprising amount
of work considering everything had derived from the same Mini-OS code.
You can observe how empty the rumprun/platform/* directories are now.
Support for new hypervisors can now more or less be added by
implementing the bmk_platform_*() group of functions and of course guest
bootstrap code for that particular hypervisor. The rest of the
platform-specific bits have to do with accessing the I/O device
infrastructure offered by a given platform; mostly implemented by the
non-shared rumpuser_*() interfaces.
There's still some minor cleanup left, such as killing the remaining
layering violations, organizing the platform specific code into
different subdirectories based on their layers, and limiting header
visibility. However, those are minor safeguard things, and don't really
affect development the same way as having to edit multiple slightly
differently copypasted versions of the same code. In other words, maybe
I can finally have some fun around here again.
Please send an issue report if something broke.
- antti