IS_ERR () Makro in Linux

8

Als ich erfahren habe, wie man Gerätetreiber schreibt, stieß ich auf das Makro IS_ERR (). Aber ich konnte nicht finden, wie es funktioniert. Ich habe den folgenden Code enthalten:

%Vor%

Also, was expandiert das IS_ERR () Makro und wie wird es ausgeführt?

    
S.I.J 19.05.2015, 08:23
quelle

3 Antworten

6

Testet, ob der angegebene Zeiger anstelle eines gültigen Datenzeigers als Fehlerwert () betrachtet werden soll.

Behandelt Werte unter 1000 L (4096) als Fehler und nicht als Zeiger, da diese Werte keine gültigen Zeiger sind.

In Ihrem Code wird IS_ERR verwendet, um zu überprüfen, ob class_create erfolgreich erstellt wurde, um ebbcharClass zu erstellen. Wenn ein Fehler auftritt, heben Sie die Registrierung des Char-Treibers auf und melden Sie den Fehler.

Sie finden MACROS und Inline-Funktionen in err.h

    
LPs 19.05.2015, 08:44
quelle
1

Wenn Sie wissen möchten, zu was das Makro expandiert, kompilieren Sie Ihre Datei einfach mit der Option -E von gcc, die nur eine Vorverarbeitung durchführt. Es enthält alle Header und erweitert alle Makros.

Das Makro wird nicht per se "ausgeführt", es ist nur eine Art "Suchen und Ersetzen".

    
Eregrith 19.05.2015 09:08
quelle
1

Sei vorsichtig mit der Falle:

%Vor%

Dies umfasst -1 bis -4095, was den Fehlercode darstellt, nicht die Nummer unter 4096 oder NULL (0). Jeder Wert von 0 bis 4294963201 (0xfffff001) gilt als kein Fehler. Verwenden Sie es nicht, um die NULL-Prüfung abzudecken.

    
bsd unix 17.10.2017 20:44
quelle