OK. After quite a bit of work, my memory managers seem solid, my exception handlers are useful, and I now have the base foundations of my kernel laid
Now, from here I would like to find all of the plug and play busses that my kernel could support out, like PCI, PCIE, AGP, and maybe even MCA (Like that's ever gonna happen )
The problem here is how do I find them. From my understanding, there are two ways to do this. If there are more, then please point me at them, since I was unable to find them on the OSDevWiki!
The first, and easiest, would be to use the MP tables. These are really simply laid out, provide the information you need, and Intel even have a very nice document on them. The problem here is most Uniprocessor machines don't have them... obviously...
And so the only remaining option is ACPI. Urgh. I have briefly looked into the ACPI specifications, and from my understanding, to do what MP would make so easy involves writing my own AML interpreter. Or, more likely, shoehorning Intel's ACPI implementation in since writing your own seems to be an inhuman task.
Now, please, someone tell me that doing something as simple as identifying the system's connected busses is easier than this. Please tell me that either there is a third method of which I have heard nothing or that ACPI is not the horrible complicated monstrosity that I hear it is.
Finding the plug and play busses
- CmpXchg
- Member
- Posts: 61
- Joined: Mon Apr 28, 2008 12:14 pm
- Location: Petrozavodsk, Russia during school months, Vänersborg Sweden in the summertime
Re: Finding the plug and play busses
Obviuosly? Well, I have a Uniprocessor system and it seems that some SMP table is present.Owen wrote:The first, and easiest, would be to use the MP tables. These are really simply laid out, provide the information you need, and Intel even have a very nice document on them. The problem here is most Uniprocessor machines don't have them... obviously...
Well, actually only the Base Table is present (there are also OEM and Extended tables, which I don't have). But the Base table seems to contain the information about buses!
There is a program called PC Doctor, which showed me my tables.
It really shows something like
Code: Select all
Installed buses:
Bus number 1:
Bus ID: 00H
Bus type: PCI
Bus number 2:
Bus ID: 01H
Bus type: PCI
Bus number 3:
Bus ID: 02H
Bus type: ISA
CmpXchg
Every Man Must Learn David DeAngelo's Stuff, Period.
http://www.doubleyourdating.com/Catalog
http://www.doubleyourdating.com/Catalog
Re: Finding the plug and play busses
You'll get SMP information too if you've got a uniprocessor with hyperthreading.CmpXchg wrote:Obviuosly? Well, I have a Uniprocessor system and it seems that some SMP table is present.Owen wrote:The first, and easiest, would be to use the MP tables. These are really simply laid out, provide the information you need, and Intel even have a very nice document on them. The problem here is most Uniprocessor machines don't have them... obviously...
Well, actually only the Base Table is present (there are also OEM and Extended tables, which I don't have). But the Base table seems to contain the information about buses!
There is a program called PC Doctor, which showed me my tables.
It really shows something likeHope this helps,Code: Select all
Installed buses: Bus number 1: Bus ID: 00H Bus type: PCI Bus number 2: Bus ID: 01H Bus type: PCI Bus number 3: Bus ID: 02H Bus type: ISA
CmpXchg
- CmpXchg
- Member
- Posts: 61
- Joined: Mon Apr 28, 2008 12:14 pm
- Location: Petrozavodsk, Russia during school months, Vänersborg Sweden in the summertime
Yes, I thought so too. Most modern motherboards will provide SMP tables, so it's not a problem.
Even if there're no tables, we can still be sure PCI bus is present (if it hadn't been, the OS wouldn't've been able to run on such a machine). USB and Firewire (IEEE1384) can be detected from PCI, so it ain't going to be a problem.
I'm not sure about MCA, but you'll probably find a way to handle it if you really need to.
Even if there're no tables, we can still be sure PCI bus is present (if it hadn't been, the OS wouldn't've been able to run on such a machine). USB and Firewire (IEEE1384) can be detected from PCI, so it ain't going to be a problem.
I'm not sure about MCA, but you'll probably find a way to handle it if you really need to.
Every Man Must Learn David DeAngelo's Stuff, Period.
http://www.doubleyourdating.com/Catalog
http://www.doubleyourdating.com/Catalog