In einem meiner Beispiel-Linux-Kernel-Modul habe ich eine Variable Device_Open
statisch außerhalb aller Funktionen deklariert und eine statische Variable counter
innerhalb einer Funktion device_open
deklariert. Innerhalb von device_open
erhöhe ich sowohl Device_Open
als auch counter
. Das Modul wurde ohne Fehler in den Kernel eingefügt und ich habe eine Gerätedatei für mein Modul / dev / chardev erstellt.
Ich mache cat /dev/chardev
. Was ich sehen kann ist, dass counter
für jeden Aufruf von cat /dev/chardev
inkrementiert wird, aber Device_Open
bleibt immer 0. Was ist der Grund für den Unterschied im Verhalten in Bezug auf die Erhöhung des Wertes der Variablen?
Im Folgenden finden Sie das Code-Snippet zum Verständnis
%Vor%