Re: Interrupts im Kernel / Multi-IO

From: Bernd Walter <ticso(at)cicely5.cicely.de>
Date: Wed, 16 Aug 2000 19:09:14 +0200

On Tue, Aug 15, 2000 at 10:36:27AM +0100, Titus von Boxberg wrote:
> Moin,
>
> wie funktioniert der übliche weg, mehrere isa-devices einen interrupt
> benutzen zu lassen?
> ich möchte entweder (lieber) mehrere devices in die config-Datei
> eintragen, also
> device xx0 at isa? port xyz irq 5
> device xx1 at isa? port abc irq 5
> ....
>
> oder
> dem xxx-Treiber selbst die möglichkeit geben,
> eine feste anzahl von devices zu verwalten,

Moeglich ist in etwa beides.
Es gibt einige Multiport (z.B. AST kompatible)serielen Karten bei den man auf
einer Schnittstelle den IRQ konfiguriert und die anderen ueber flags mit
dieser verbunden werden.
In anderen Faellen wen z.B. die I/O ports der anderen devices feststehen
wenn du einen Basisaddresse kennst kann mans auch mit einem Eintrag machen.

> also ein
> device xxx0 ...
> führt zu z.B. 8 geräten, die über minor-nummern
> angesprochen werden können.
> wie teile ich in diesem fall dem kernel mit, wieviele UNITs
> bzw. geräte mein treiber zur verfügung stellt?

Gar nicht.
Der Treiber registriert sich beim kernel fuer die komplette major mittels
cdevsw_add().
Anschliessend machst in /dev die devnodes und der kernel teilt bei jedem
Zugriff auf ein device mit deiner major deinem Treiber die minor Nummer mit.
Dieser muss dann entscheiden was er damit macht um dieses auf die
Physischen Geraete unterzubringen oder mit ENXIO einfach sagt gibt es nicht.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso(at)cicely.de         Usergroup           info(at)cosmo-project.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 16 Aug 2000 - 19:09:38 CEST

search this site