2012-10-25 3 views
7

Auf einem laufenden Linux-System möchte ich wissen, welches Gerätetreibermodul einen bestimmten sysfs-Eintrag erstellt hat. Ist es möglich zu wissen? Ich weiß, dass ich nach relevanten Zeichenfolgen in der Kernelquelle grep und versuchen kann, zu identifizieren. Aber, gibt es einen Weg, ohne das zu tun?Identifizieren des Kernel-Moduls, das einen sysfs-Eintrag erstellt hat

+0

Ist dies in C oder C++? – vdbuilder

Antwort

2

Sie können herausfinden, welcher Treiber einen sysfs-Eintrag erstellt hat, indem Sie seine Quelle durchlaufen. Wenn der Treiber device_create_file()/device_remove_file() in seinen init/exit-Sequenzen verwendet, können Sie sicher sein, dass eine sysfs-Attributdatei vom Treiber erstellt wurde. Sie können auch DEVICE_ATTR (_name, _mode, _show, _store) Makro in der Quelle finden, um herauszufinden, welche Funktionalität von der sysfs-Datei zur Verfügung gestellt wird. In der Regel können Sie entweder die Datei cattern oder eine Zeichenkette darauf schreiben. A cat /sys/.../file entspricht der Funktion _show und echo /sys/.../file entspricht der _store-Funktion im Makro.

+0

Danke Sanrio für die Antwort. Ich wusste von dem, was du erwähnt hast. Meine Frage ist, dass es bei einem sysfs-Eintrag möglich ist, zu bestimmen, zu welchem ​​Treibermodul (wenn es von lsmod aufgelistet wird), dass es zu einem laufenden Linux-System gehört. – Sann

+0

Ich bezweifle, es gibt einen direkten Weg, um das zu tun .. Wenn Sie auf eins stoßen, dann teilen Sie es bitte hier :) – shinymetal