I'm trying to develop my own kernel, but I've run into a bit of a moral problem: device drivers/modules. I keep pondering on what to implement inside the kernel or in external modules...
I plan on detecting devices using ACPI and then loading device drivers for each device, as needed.
I don't know yet if ACPI detects PCI as a separate device or not... so would I go implementing PCI as part of the kernel or as a module (I'm thinking that not all PCI controllers use the same I/O ports for enumerating PCI devices so maybe each motherboard manufacturer would provide their own device driver).
I guess my real question is this: Has anyone here successfully used ACPI the way I described above? If so, then can you provide a dump or something to show the ACPI namespace on your test machine? All I really need is an example to get an idea of what this namespace looks like, and I'd hate to have to read the ACPI spec, because it has Microsoft's fingerprint all over it and it would take me a lot of time to figure out all the ambiguities.

Oh, and I forgot what I was initially going to ask: Is there any standard open source model for device driver files or for loading/unloading device drivers?
Thanks,
Gabriel