Statische globale Variable und statische lokale Variable in der Treiberfunktion

8

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%     
nitin_cherian 14.05.2011, 09:30
quelle

1 Antwort

7

Ich habe nach "Device_open" gesucht und die entsprechende Geräteversion gefunden. Sind Sie sicher, dass Sie diese Funktion nicht haben? Ich habe es bei TLDP gefunden.

%Vor%     
cnicutar 14.05.2011, 09:46
quelle

Tags und Links