Kernel-Modul testen

10

Ich bin daran interessiert, Funktionen und globale Variablen zu verspotten, um ein Kernelmodul zu testen.

Zuerst mit Ссылка versucht, aber es gab 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 ein Kernelmodul würde einen Fehler verursachen, weil stdio nicht verfügbar wäre, kompilieren für den Benutzerraum würde ein Fehler sein, 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 die Funktionen angewiesen sind, um einen anständigen Test zu schreiben.

Ich habe ein paar Fragen und articles dies hat aber keine Antwort gefunden, oder einen definitiven Grund dafür, warum dies nicht möglich wäre.

    
andrei 14.12.2015, 09:57
quelle

1 Antwort

5

Ich würde wie folgt vorgehen:

  • Implementieren Sie Ihr Kernelmodul
  • Definieren Sie eine API, damit ein Programm auf Benutzerebene Ihr Modul testen kann, das entweder auf folgendem basieren kann:
    • ein Zeichengerät in /dev/ (wo Sie richtige ioctls definieren können);
    • eine Datei in /proc/ (entmutigt);
    • bestimmte Systemaufrufe (entmutigt);
    • ein Eintrag in /sys/
  • Implementieren Sie auf Benutzerebene ein Programm (falls Sie ein geeignetes Framework wie CUnit oder googletest ), das mit dem Kernel-Modul interagiert, das die verschiedenen Funktionen testet
Claudio 14.12.2015, 15:25
quelle