2016-06-28 8 views
1

Ich brauche Hilfe mit einer meiner Aufgabe. Ich schreibe ein Linux-Kernel-Modul, das alle geladenen Module drucken soll (genau wie print_module aber jeweils in einer anderen Zeile). Ich darf keine Dateien lesen (wie/proc/modules).Wo ist die Liste mit allen geladenen Kernel-Modulen

Mein Problem ist, dass ich die entsprechende Liste im Kernel nicht finden kann, so dass ich mit meinem C-Code darauf zugreifen kann.

Ich suche schon Modules.c/.h und finde das Modul struct, wo eine doppelt verknüpfte Liste gespeichert ist, aber ich kann nicht auf die anderen Module zugreifen.

Ich hoffe mein Problem ist klar und jemand kann mir helfen. Vielen Dank im Voraus

+0

Ich bin kein Kernel-Experte (überhaupt ;-), aber woher bekommt 'print_modules' seine Informationen, und konnte man das nicht klonen Funktion und füge ein '\ n' zu seiner Druckanweisung hinzu? Entschuldigung, wenn Sie darüber nachgedacht haben, aber Sie haben nicht klar gemacht, warum Sie das nicht verwenden können. Viel Glück. (Löscht diesen Kommentar nach einiger Zeit). – shellter

+0

das ist, was wir tun wollten, aber diese Methode (http://lxr.free-electronics.com/source/kernel/module.c#L4052 nur Strg + f + "print_module") braucht viele Argumente, die wir cant locate aswell =/mir wurde gesagt, dass es eine ziemlich einfache Lösung geben sollte, indem ich einfach die Liste durchblättere – MajorasKid

+1

Die Antwort gefunden: Die Liste kann innerhalb des eigenen Kernel-Moduls gefunden werden (mit einer Funktion get_module). Es gibt ein Objekt Modul-> Liste, das eine doppelt verknüpfte Liste ist. Mit liste.h können wir das modul von list.next/.prev – MajorasKid

Antwort

0

Kopie von meinem Kommentar:

Die Liste kann innerhalb der eigenen Kernel-Modul (mit einer Funktion get_module) gefunden werden. Es gibt ein Objekt Modul-> Liste, das eine doppelt verknüpfte Liste ist. Mit list.h können wir das Modul list.next/.prev bekommen