Nächste Seite: Interrupt Behandlung
Aufwärts: Der I/ O Server
Vorherige Seite: Ressourcenverwaltung
  Inhalt
PCI Support
Der Linuxkern beinhaltet ein PCI-Subsystem aus zwei Teilen -- einem
architekturabhängigen und einem allgemeinen, plattformübergreifenden. Da auch in
der Version 2.4 des Kerns eine eindeutig definierte Scnittstelle zu diesem
existiert und nur wenige Anforderungen an die Kernumgebung gestellt werden,
kann man das Subsystem einfach aus dem Kern herauslösen und in einer schmalen
Emulationsumgebung verwenden.
Diese Eigenschaft macht sich der I/ O Server zunutze und nutzt eine interne
Bibliothek bestehend aus unmodifizierten Linuxquellen des Subsystems und
der notwendigen Emulationsumgebung für Zugriffe auf den PCI-Bus und Verwaltung
der angeschlossenen Geräte.
Der Umfang der Emulation beschränkt sich hierbei auf einfache
Speicherallokation und -freigabe sowie Prozeduren zum Aufruf des I/ O Ressourcen-Management.
Die kerninterne Schnittstelle des PCI-Subssystem wurde für den I/ O Server 1:1
übernommen, und es werden somit alle Funktionen, die Linux unterstützt,
exportiert. Weiterhin wurde ein Datentyp für ein PCI-Gerät nach dem
Originalvorbild definiert, der alle relevanten Informationen zur Verfügung
stellt.
- Geräteabstraktion
- Der Konfigurationsbereich eines PCI-Gerätes beinhaltet
Informationen wie Index und Funktionsnummer, Hersteller- und
Geräteidentifikator usw, aber auch Adressen eingeblendeter Speicherbereiche
(MMIO) oder Ports. Diese Informationen stellt der l4io_pci_dev_t
Datentyp bereit. Außerdem erhält jedes Gerät ein Handle, um bei
Zugriffen referenziert werden zu können (l4io_pdev_t).
- Auffinden der Geräte
- Ein angeschlossenes Gerät kann durch Angabe
verschiedener Identifikatoren lokalisiert werden. Üblich sind hier Hersteller
und Typ oder die Geräteklasse. Bei einem pci_find Aufruf wird die
gesamte Informationsstruktur als Ergebnis zurückgegeben. Diese Funktionen
initiieren keinen Zugriff auf den Bus, denn die Informationen hält das
Subsystem in einer Datenbank im Speicher.
- PCI Konfigurationsbereich
- Zugriffe auf diesen Bereich können in Byte,
Wort oder Doppelwort Granularität stattfinden und Lese- oder
Schreiboperationen sein. Hierbei wird vorallem auf den Bereich außerhalb des
Headers (die ersten 16 Doppelworte) zugegriffen, da dieser gerätespezifisch
ist. l4io_read/write Aufrufe erfordern die Angabe des
Handles für das gwünschte Gerät.
- Weitere Funktionen
- unterstützen die Konfiguration und Initialisierung
der PCI-Geräte für Busmastering und Power Management. Auch hier wird das
Handle zur Identifikation des Gerätes verwendet.
Nächste Seite: Interrupt Behandlung
Aufwärts: Der I/ O Server
Vorherige Seite: Ressourcenverwaltung
  Inhalt
Christian Helmuth
2001-12-11