2015-12-14 3 views
9

Ich habe Interesse an Spottfunktionen und globalen Variablen, um ein Kernel-Modul zu testen.Kernel-Modul testen

Zunächst mit https://github.com/ThrowTheSwitch/CMock versucht, aber lief auf Probleme. Alle Artikel Links, wie dies zu tun wäre auch toll. (für Kernel-Module). Um mehr Details hier zu geben: das Kompilieren als Kernelmodul würde einen Fehler verursachen, weil stdio nicht verfügbar wäre, kompilieren für Benutzerraum würde einen Fehler ergeben, weil es Sachen wie printk nicht finden würde.

Idealerweise hätte ich entweder eine ausführbare Datei auf Benutzerebene oder ein Kernelmodul, das einen Komponententest für meine Funktionen ausführen würde. Die Teile, mit denen ich Probleme habe, verspotten globale Abhängigkeiten wie Strukturen, auf die sich die Funktionen verlassen, um einen anständigen Test zu schreiben.

Ich habe durch ein paar questions gegangen und articlesaboutthis aber keine Antwort, oder einen endgültigen Grund, warum dies möglich wäre, nicht gefunden.

Antwort

4

ich gehen würde, wie folgt: Modul

  • Implementieren Sie Ihre Kernel
  • eine API definieren ein Benutzerebene Programm testen Sie Ihr Modul zu lassen, die entweder auf der Grundlage werden können:
    • ein Zeichengerät in /dev/ (wo Sie richtige ioctls definieren können);
    • eine Datei in /proc/ (entmutigt);
    • bestimmte Systemaufrufe (entmutigt);
    • ein Eintrag in /sys/
  • auf Benutzerebene Implementieren eines Programms (in Fall einen geeigneten Rahmen wie CUnit oder googletest verwendet wird), die ich mit dem Kernel-Modul Testen der verschiedenen Funktionalitäten
+0

interagiert wie die Idee, aber es ist schwer für Code, der bereits geschrieben wurde, in die Praxis umzusetzen. – andrei

Verwandte Themen