I've been thinking about a chat I had with Alex Ionescu about the "userspace driver framework" that MS has put in Windows Vista for a couple of days now. Mostly I was trying to think of how they could create a secure system where the drivers could live outside the kernel and still manage to do the job of providing clean access to the hardware.
I was doing this because I am just starting to take a look at the ReactOS code with an eye towards helping on the project. That being the case I decided to see if I could find a spot where I could fit my skills into the project. While I'm more geared towards fixing bugs or filling out places marked "TODO" the thought of userspace drivers - or rather, just the thought that such a system would allow for drivers that could die and not take the system with them - has caught my interest.
At the current time the only way I can see this being done is by using the HAL to abstract all hardware and providing an API that, via the HAL, will allow for _AUTHENTICATED_ programs (aka drivers) to register themselves with the kernel and provide access to said devices. The access itself would best be handled by the drivers registering an interface that programs can use to call directly into the driver.
This just leaves me with a simple problem to solve - should the interface be a COM/COM+ interface (or it's primitive, since I don't think anyone wants the lag having COM/COM+ in the kernel would cause) or should it be something simpler, like a UFS path ?
DRH
(if the PGP signature looks bad, the list probably modified the mail)