2013-10-19 5 views
6

In der Linux-Gerätetreiberentwicklung verwendet die file_operations-Struktur "struct module * owner".Bedeutung von THIS_MODULE in Linux-Treiber

[1] Was nutzt diese Struktur, wenn wir sie immer mit THIS_MODULE initialisieren? [2] Wann kann dieses Feld auf NULL gesetzt werden?

Antwort

7

In diesem Feld wird angegeben, wer Eigentümer von struct file_operations ist. Dies verhindert, dass das Modul entladen wird, wenn es in Betrieb ist. Bei der Initialisierung mit THIS_MODULE enthält das aktuelle Modul die Eigentümerschaft

1

[1] Strukturmodul * Besitzer wird häufig bei einigen Strukturen verwendet und ist überhaupt keine Operation; Es ist ein Zeiger auf das Modul, das die Struktur "besitzt". Dieses Feld wird verwendet, um zu verhindern, dass das Modul entladen wird, während seine Operationen verwendet werden. Fast die ganze Zeit wird es einfach initialisiert auf THIS_MODULE, ein Makro definiert in < linux/module.h>.

.

[2] Ich würde nicht empfehlen, sie auf null zu setzen, da dies zu Fehlfunktionen des Treibers und anderen Problemen führen kann. Verwenden Sie stattdessen die bewährten Methoden der Linux-Kernel-Entwicklung.

In einigen Architekturen der „.owner“ entfernt wurde, so stellen Sie sicher, Ihre Distribution und Architektur mit noch.

Ich hoffe es hilft Ihrem Verständnis.

Referenzen: LDD3, Kernelneulinge.