Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ idevice(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

idintconf(1M)

XXexist(5)

XXsetint(5)

idevice(4)                      (Nur RM400)                      idevice(4)

NAME
     idevice - Interrupt-Konfigurationsdatei

BESCHREIBUNG
     Jedes Paket, das EISA/ISA-Bus-Interrupts verwendet, muß auch über eine
     Datei idevice verfügen, in der die Interrupt-Anforderungen des Pakets
     angegeben sind.

     Beim Installieren des Pakets (mit idinstall), wird der idevice-Teil
     des Pakets in das Verzeichnis idevice.d des Kernverbindungskit
     kopiert. Bei der Kernverbindung werden die Dateien zu dieser Kompo-
     nente zu einer einzigen Datei verkettet, die dann von idintconf verar-
     beitet wird. Dieses Kommando generiert eine Datenstruktur, die beim
     Booten des Kerns den jeweiligen Verwendungszweck der Interrupt-
     Ressourcen des EISA/ISA-Busses zuordnet.

     Die Datei idevice besteht aus einer oder mehreren Zeilen, wobei in
     jeder Zeile eine vom Gerät benötigte Interrupt-Ressource beschrieben
     wird. Jede Zeile enthält neun durch Leerraum getrennte Felder. Der
     Name im ersten Feld kann in Anführungszeichen angegeben werden. In den
     übrigen Feldern ist dies nicht möglich. Alle Felder müssen angegeben
     sein. Kommentarzeilen sind Zeilen, die mit "#" oder "*" beginnen.

     Wenn zulässig, wird das Zeichen "-" verwendet, um anzugeben, daß das
     Feld nicht definiert sein sollte. Das Zeichen "*" wird verwendet, um
     den Standardwert für das Feld anzugeben. Normalerweise besteht dieser
     aus dem im Feld Internal name angegebenen internen Namen mit einer
     angehängten, feldabhängigen Zeichenkette.

     Es wird davon ausgegangen, daß jeder Zeile bei späteren, überarbeite-
     ten Versionen der Datei noch weitere Felder hinzugefügt werden. Daher
     sollten keine Kommentare an das Zeilenende gestellt werden.

     In der aktuelle Implementierung sind folgende Felder enthalten:

     Colloquial name
          Das erste Feld in jeder Zeile ist ein vom Benutzer lesbarer Name
          für das Gerät, der verwendet wird, wenn idintconf oder der Kern
          eine Diagnose durchführen muß. Dieses Feld darf in den zu einem
          Treiber gehörenden Zeilen nur einmal vorkommen. Der Name in die-
          sem Feld kann in Anführungszeichen angegeben werden. Es ist das
          einzige Feld, bei dem dies möglich ist.

     Internal name
          Das zweite Feld besteht aus dem Namen, der zum Generieren von
          Symbolen für den Kern verwendet wird. Es ist mit dem Feld Device
          name in sdevice identisch. Mit diesem Feld werden andere Felder
          generiert, die auf den Standardwert gesetzt wurden.







Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

idevice(4)                      (Nur RM400)                      idevice(4)

          Wird das Feld auf "-" oder "*" gesetzt, entspricht der Feldwert
          dem des Feldes Colloquial name. Dies ist nicht zulässig, wenn
          Colloquial name Leerzeichen enthält.

     Bus type
          Dieses Feld gibt an, über welche Art von Busschnittstelle die
          Hardware verfügt, und kann den Wert ISA oder EISA enthalten. Für
          das Feld gibt es keinen Standardwert. Es kann durch "I" bzw. "E"
          abgekürzt werden.

     Interrupt type
          Verfügt die Hardware über eine ISA-Schnittstelle, kann für dieses
          Feld EDGE oder ein "-" (hierbei wird das Feld standardmäßig auf
          EDGE gesetzt) angegeben werden. Für ISA-Karten sind keine anderen
          Werte möglich. Der Grund hierfür ist eine Hardwarebeschränkung im
          Originaldesign des AT-Busses.

          Verfügt die Hardware über eine EISA-Schnittstelle, wird mit die-
          sem Feld die Art des Interrupts angegeben, den die Hardware ver-
          arbeiten kann. Dies kann entweder EDGE (für flanken-getriggerte
          Geräte), LEVEL (für zustands-getriggerte Geräte) oder SHARED
          sein. Es gibt keinen Standardwert für dieses Feld bei einem Gerät
          mit EISA-Bus.

          SHARED kann für Geräte verwendet werden, die zustands-getriggerte
          Interrupts einsetzen und beim Interrupt feststellen können, ob
          die Hardware tatsächlich einen Interrupt verwendet hat. Alle
          Interrupt-Routinen mit einem gemeinsamen Interrupt werden aufge-
          rufen, wenn ein Interrupt festgestellt wird. Die Reihenfolge, in
          der diese Routinen aufgerufen werden, ist NICHT definiert.

          Falls erforderlich kann dieses Feld mit dem ersten Buchstaben des
          jeweiligen Werts abgekürzt werden.

     Number of Interrupts
          Normalerweise verwenden die meisten Geräte nur einen Interrupt
          für jede Karte, so daß das Feld auf 1 gesetzt wird. Es gibt
          allerdings auch Karten, die mehrere Interrupts pro Hardwarekarte
          verwenden, wie zum Beispiel die chase-Karte. In diesem Fall wird
          dieses Feld auf die Anzahl der von jeder Karte verwendeten Inter-
          rupts gesetzt. Für die chase-Karte würde der Wert z. B. 2 lauten.

          Für dieses Feld gibt es keinen Standardwert.











Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

idevice(4)                      (Nur RM400)                      idevice(4)

     Possible Interrupts
          Dieses Feld enthält eine durch Kommata getrennte Liste möglicher
          Interrupts, die die Karte verwenden kann. Diese Liste ist logisch
          in Gruppen aus n-Tupel eingeteilt. Die Größe jedes n-Tupel wird
          durch das Feld Number of interrupts bestimmt. Im Normalfall gilt
          für n-Tupel die Länge 1, so daß jeder Wert separat behandelt
          wird.

          Bei Geräten mit ISA-Bus kann die Interrupt-Nummer durch die Soft-
          waresteuerung nicht geändert werden. Bei einigen Karten mag dies
          möglich sein, dies ist jedoch nicht der Normalfall. Dies bedeu-
          tet, daß nur der erste n-Tupel verwendet wird. idintconf und der
          Kern geben bei kollidierenden Interrupt-Nummern Warnungen aus. In
          diesem Fall werden die folgenden n-Tupel dazu verwendet, den
          Benutzer über eine Änderung der Jumper zu informieren, durch die
          ein Einsatz der Karte möglich wäre. Bei einer Interrupt-Kollision
          zwischen zwei ISA-Bus-Geräten werden beide Geräte deaktiviert.
          Der Grund ist eine Hardwarebeschränkung im Design des AT-Busses.

          Bei Geräten mit EISA-Bus kann die Interrupt-Anzahl dynamisch
          zugeordnet werden, so daß es nicht zu Konflikten mit anderen
          Geräten kommen kann. In diesem Fall wird jeder n-Tupel nacheinan-
          der ausprobiert. Kommt es bei einem n-Tupel zu keinem Konflikt
          mit anderen Interrupts, wird der Karte dieser n-Tupel zugeordnet.
          Kommt es allerdings bei allen n-Tupel zu Konflikten, versucht der
          Kern, alle Konflikte verursachende Interrupts neu anzuordnen, so
          daß sie nicht mehr kollidieren. Wenn zwei oder mehr Geräte einen
          Interrupt gemeinsam verwenden, werden sie nicht neu angeordnet.
          Auf diese Weise wird versucht, alle Interrupt-Konflikte zu ver-
          meiden. Wird der Konflikt durch ein ISA-Gerät verursacht, kann
          dessen Interrupt-Nummer nicht geändert werden. Wenn bei allen
          möglichen Interrupt-Anordnungen Konflikte auftreten, wird das
          Gerät nicht aktiviert, und dem Gerät wird kein Interrupt zugeord-
          net.

          Die n-Tupel dieses Feldes sollten nach bevorzugter Reihenfolge
          angeordnet werden, d. h. die am meisten bevorzugte Interrupt-
          Nummer sollte ganz oben in der Liste stehen.

     Interrupt routine
          Dieses Feld gibt den Namen der vom Gerät verwendeten Funktion zur
          Bearbeitung von Interrupts an. Im Normalfall, wenn der Treiber
          nur einen Interrupt je Gerät verwendet, kann dieses Feld durch
          einen "*" auf den Standardwert gesetzt werden. In diesem Fall
          heißt die Funktion internalnameintr.

          Benötigt der Treiber mehrere Interrupts pro Gerät, enthält dieses
          Feld eine durch Kommata abgetrennte Liste der zu verwendenden
          Interrupt-Funktionen. In diesem Fall gibt es keine Standardak-
          tion, da genügend Interrupt-Routinen pro Gerät zur Verfügung
          gestellt werden müssen. Die Reihenfolge ist in Bezug auf die
          Interrupt-Nummern lexikalisch, d. h., die erste Interrupt-Routine


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

idevice(4)                      (Nur RM400)                      idevice(4)

          wird durch einen Interrupt an der ersten Interrupt-Nummer aufge-
          rufen, die zweite Interrupt-Routine durch einen Interrupt an der
          zweiten Nummer.

          Enthält das Feld ein "-", ist keine Interrupt-Funktion angegeben;
          die Verwendung dieses Wertes ist für spätere Versionen vorgese-
          hen.

     Existence routine
          Dieses Feld enthält den Namen einer Routine, die als erste Rou-
          tine des Treibers aufgerufen wird. Sie wird vor der Treiberrou-
          tine init aufgerufen. Diese Routine soll feststellen, ob das
          Gerät tatsächlich existiert. Existiert das Gerät, sollte die Rou-
          tine PROBEOK ausgeben. Existiert das Gerät nicht, sollte die
          Routine PROBEFAIL ausgeben. Kann der Treiber nicht feststellen,
          ob das Gerät existiert, sollte diese Routine PROBEOK ausgeben.

          Damit der Treiber feststellen kann, welches Hardwaregerät geprüft
          werden soll, wird dieser Routine die Adresse einer intrparamt-
          Struktur übergeben. Anhand der Felder in dieser Struktur kann
          festgestellt werden, welches Gerät geprüft wird.

          Enthält dieses Feld ein "-", ist keine Existenzroutine angegeben.
          In diesem Fall nimmt der Kern an, daß das Gerät existiert und
          setzt die Verarbeitung wie bei der Ausgabe von PROBEOK fort.

          Enthält dieses Feld einen "*", lautet der Name der Routine
          internalnameexist.

          Weitere Informationen finden Sie in der Beschreibung von XXe-
          xist(5).

     Set interrupt routine
          Dieses Feld gibt den Namen einer Funktion an, die nach der Rou-
          tine exist, aber vor der Routine init aufgerufen wird. Diese
          Funktion wird aufgerufen, wenn der Kern Interrupts für das Gerät
          zuordnen konnte. Wird diese Routine nicht aufgerufen, konnte der
          Kern keine Interrupts für das Gerät zuordnen, d. h. das Gerät
          darf sich nicht selbst initialisieren. Ein Treiber, der durch
          eine exist-Routine die Meldung PROBEFAIL für ein bestimmtes
          Gerät ausgibt, ruft niemals die setint-Routine für dieses Gerät
          auf.

          Dieser Routine werden zwei Optionen übergeben. Die erste ist ein
          Zeiger auf eine Liste mit Ganzzahlen, die die Interrupt-Zeilen
          darstellen, die dem jeweiligen Gerät zugeordnet wurden. Hierfür
          wird ein Zeiger verwendet, weil für einige Geräte mehr als ein
          Interrupt erforderlich ist. Es wird angenommen, daß die Routine
          setint weiß, wieviele Interrupts sie zugeordnet hat.

          Bei der zweiten Option handelt es sich um einen Zeiger auf eine
          intrparamt-Struktur. Anhand der Elemente dieser Struktur läßt


Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

idevice(4)                      (Nur RM400)                      idevice(4)

          sich feststellen, welchem Gerät die Interrupts zugeordnet wurden.

          Enthält das Feld einen "*", lautet die Routine
          internalnamesetint. Enthält das Feld ein "-", wurde keine
          setint-Funktion angegeben; die Verwendung dieses Wertes ist für
          spätere Versionen vorgesehen.

          Wenn weder die Routine setint noch die Routine exist aufgerufen
          ist, kann der Treiber davon ausgehen, daß er auf einem System
          ohne dynamische Interrupt-Zuordnung läuft, d. h., ein System vor
          Kernversion 5.42.

   Verwendung von idevice

     Jede Zeile in der Datei idevice beschreibt ein Treiber-/Gerätepaar und
     muß einen entsprechenden Eintrag in der Datei sdevice haben. Jede
     Zeile in der Datei idevice definiert die Anforderungen eines Hardware-
     teils. Kann ein Treiber mehrere EISA-Geräte unterstützen, die Ressour-
     cen gemeinsam benutzen, d. h. Interrupt-Nummern und Interrupt-Geräte,
     muß in der Datei idevice nur eine Zeile angegeben werden. In diesem
     Fall aktiviert bzw. deaktiviert der sdevice-Eintrag alle Geräte und
     dann ist der Treiber dafür verantwortlich, daß die Routinen exist und
     setint korrekt bearbeitet werden.

DATEIEN
     idevice

     sdevice

SIEHE AUCH
     idintconf(1M), XXexist(5), XXsetint(5).























Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026