2016-04-11 12 views
0

Ich habe einen Linux-Treiber, der einen Treiber verwenden kann, der im Kernel existiert, aber erst nachdem ich ihn auch manuell eingefügt habe. Im Grunde füge ich meinen Treiber ein, dann füge den Kernel ein (sein kompilierter als ein Modul und nicht eingebaut), und sie können sich miteinander verbinden.Linux-Kernel-Modul automatisch laden

Um den anderen Treiber aufzurufen, verwende ich platform_device_alloc ("Treibername", 0), dann ordne ich die Ressourcen für den Treiber unter Verwendung des gleichen Namens und des Speicherplatzes, den ich dafür brauche, und schließlich Ich benutze platform_device_add. Damit kann ich mich mit dem Treiber verbinden und die Probe-Funktion mit allem, was ich brauche, ausführen.

Was ich will, ist nur mein Modul einfügen, und dass er erkennt, dass der andere im System existiert, und verbinden Sie sich mit ihm, ohne dass Sie es manuell einfügen müssen.

Vielen Dank für Ihre Hilfe und Entschuldigung für alle englischen Fehler.

Mit freundlichen Grüßen

+1

Wenn Ihr Treiber ein Symbol verwendet, das vom anderen Treiber exportiert wurde, hängt Ihr Treiber vom anderen Treiber ab. Wenn Ihr Treiber im Modulverzeichnis des Kernels installiert wurde und Sie 'depmod -a' nach der Installation ausgeführt haben, können Sie' modprobe your_driver' ausführen (wobei "your_driver" der Name Ihres Treibermoduls ist, ohne die ".ko "extension), und es wird automatisch den anderen Treiber als Abhängigkeit laden. –

+0

Der andere Treiber hat leider keine exportierten Symbole. ich verbinde meinen treiber mit dem kernel-verzeichnis, ich starte depmod -a und ich füge ihn ein. wenn ich den anderen Treiber danach modprobe, kann ich beide verbinden, aber ich kann es nicht rufen, ohne es zu modprobe. –

+0

Können Sie die Frage bearbeiten, um weitere Details darüber zu erhalten, wie Ihr Treiber den anderen Treiber verwendet? –

Antwort

0

Der richtige Weg, dies zu tun ist, um eine Funktion zu verwenden, die eine exportierte Symbol hat, genau wie @ian Abbott sagte. Wenn Sie nicht wie ich exportierte Funktionen haben, könnte ein Patch für den Treiber der einfachste Weg sein, dies zu tun!

Verwandte Themen