Variable im Kernel anlegen
-
Hi,
Ich habe das Problem dass ich Daten aus einer Datei in einem laufenden Kernel Modul auslesen möchte. Leider beschäftige ich mich erst seit kurzem mit C unter Linux, und mir fehlt es an Erfahrung damit.
Zuerst habe ich es mit fopen() probiert, wie es normalerweise im user space klappen wüde. Hat aber nicht hingehauen, dann habe ich diese Zeile im Internet gefunden:
struct file *f = filp_open(name, flags, mode);
Um die Funktion filp_open() einzubinden finde ich aber nicht die richtigen Header Dateien.
Alternativ habe ich mir gedacht kann man doch bestimmt die Daten in eine Variable im Kernel schreiben, und diese vorher mit ioctl anlegen und übergeben.
Ist das prinzipiell möglich? Oder keine gängige Variante?Grüße
Chris
-
was hast du denn vor? Willst du wirklich eine bestimmte Datei im Dateisystem auslesen oder nur ein paar Daten vom Userspace in den Kernel bringen? Für letzteres kannst du besser in /dev oder /proc eine Datei anlegen aus der das Modul lesen kann.
-
Vor habe ich folgendes: Im user space erzeugt mir ein Programm ein Input file für ein Kernel Modul, aus diesem sollen Daten per scanf in eine verkette Liste eingelesen werden.
Eigentlich könnte das aber auch schon im user space bewerkstelligt werden, so dass ich dem Kernel nur die Listendaten zur Verfügung stelle.
Wie das ablaufen soll weiß ich aber leider auch nicht so genau...
Prinzipiell würde ja dann der letzte Fall greifen, sprich Daten in eine Datei in /dev oder /proc schreiben. Diese Vorgehen kenne ich aber auch nicht, warum müssen die gerade in diese Ordner? Und welche Art von Datei wäre das?
Sorry, bin im Moment sehr verwirrt was das angeht
-
Du kannst zB. ein Char-Device erstellen. Da wird dein Modul dann benachrichtigt wenn es jemand öffnet und reinschreibt.