Wie kann ich den Zugriff(öffnen/Lesen/etc.) /dev-Geräte aus einem kernel-Modul?
Ich habe einen Treiber (PCAN-Treiber für PCI-Karte mit rtdm), das erstellt /dev/pcan0 und /dev/pcan1 kompiliert wird als netdev-Treiber.
Gibt es viele Einrichtungen, die mit diesem Treiber, aber Sie sind alle gezielt auf user-level-Programm das Lesen von CAN-Nachrichten. Was ich brauche ist jedoch, die diese Botschaften Lesen, aus einem kernel-Modul. Die PCAN-Treiber nicht exportieren einer Variablen/Funktionen, was bedeutet, dass es nicht bieten eine kernel-level-API für mich zu nutzen.
Ich schaute kurz auf den code, und Lesen aus dem /dev-Gerät und schreiben, um es nicht verwenden copy_from_user
oder copy_to_user
. Daher dachte ich, sollte es sicher sein, bei mir öffnet sich die /dev/pcan0 von meinem kernel-Modul und Lesen zu können.
Nun meine Frage, wie kann ich die öffnen/Lesen aus /dev-device von einem kernel-Modul?
P. S. ich möchte Lesen aus dem CAN-bus aus einem RTAI-real-time-thread, könnte das ein problem verursachen (zum Beispiel jeder Lesen der Durchreise linux-kernel und so brechen Echtzeit-Bedingungen?)
- Möglicherweise hilfreich: linuxjournal.com/article/8110?page=0,0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Systemaufrufe direkt aus dem kernel-Raum: sys_open(), sys_read(), sys_close().
Es gibt Linuxjournal Artikel darüber.
P/S: copy_from_user() arbeitet perfekt mit der kernel-space-Adressen.
copy_from_user
Tipp.Gegeben, dass ich mit RTDM, gab es zwei Optionen: