RTLinux 3.1 Intermodul-Kommunikation (2.6.9er)

Moin Leute!

Ich versuche gerade, per EXPORT_SYMBOL ein Treibermodul (RT-Level) mit einem Algorithmus-Modul (ebenfalls RT-Level, enthält RT-Threads) zu verknüpfen:

Das RT-Treibermodul exportiert verschiedene Funktionen und enthält den Interrupthandler. Es ist also in der Hierarchie ganz oben.

Das Algorithmusmodul (ebenfalls RT-Level) soll von demselben Interrupt gesteuert werden. Das „Zurückexportieren“ einer Funktion und das Importieren im Treibermodul funktioniert nicht (weil das Alogrithmusmodul in der Hierarchie weiter unten ist).

Wie kann ich es bewerkstelligen, dass auch das RT-Algorithmusmodul auf den gleichen Interrupt reagiert?

?? Einen zweiten Interrupthandler auch im Algorithmusmodul aufmachen (gibt das Konflikte??) ?
?? Per „rtlinux_sigaction“ auf ein Signal reagieren (funktioniert das auch im RT-Level??) ?
?? Oder ein eigenes Kommunikations-Fifo einrichten?
?? Oder Polling auf den Status einer exportierten Variable (das wollte ich vermeiden)?

Vielleicht hat ja schonmal jemand zwei RT-Module miteinander verknüpft und kann mir ein paar Tips geben!

Danke schonmal im Voraus!

Hasso

Moin!

Problem gelöst:

Ich habe, um den Interrupt-Handler im Treiber-Modul belassen zu können, noch eine weitere Funktion vom Treiber exportiert. Sie dient einzig dem Zweck, einen Funktionspointer vom Algorithmusmodul übergeben zu bekommen und diesen in einen Treiber-globalen Pointer zu kopieren.
Die vom Treiber exportierte Funktion wird von dem Echtzeit-Algorithmusmodul aufgerufen (bei Modul-Init) und übergibt dieser den entsprechenden Funktionspointer.
Auf diese Weise ist es dem treiberseitigen Interrupthandler möglich, eine Funktion im Algorithmusmodul direkt aufzurufen.

Hoffentlich war das verständlich ausgedrückt. Ist zwar nicht die schönste Methode, dafür bleiben aber Hardware-Teil und Algorithmus-Teil auch schön getrennt.

Viele Grüße,

Hasso