Achten Sie auf Fallstricke:
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO 4095
Dies umfasst -1 bis -4095, was einen Fehlercode darstellt, nicht eine Zahl unter 4096 oder NULL (0). Jeder Wert von 0 bis 4294963201 (0xfffff001) wird als kein Fehler betrachtet. Verwenden Sie ihn nicht, um die NULL-Prüfung abzudecken.
Wenn Sie wissen möchten, worauf das Makro erweitert wird, kompilieren Sie einfach Ihre Datei mit dem -E
Option von gcc, die nur die Vorverarbeitung durchführt. Es wird alle Header enthalten und alle Makros erweitern.
Das Makro wird per se nicht "ausgeführt", es ist nur eine Art "Suchen und Ersetzen".
Testet, ob der angegebene Zeiger als Fehlerwert betrachtet werden soll .
Es prüft nicht, ob der Zeiger gültig ist.
In Ihrem Code wird IS_ERR verwendet, um zu prüfen, ob class_create
ebbcharClass
erfolgreich erstellt . Wenn ein Fehler auftritt, deregistrieren Sie den Char-Treiber und melden Sie den Fehler.
MACROs und Inline-Funktionen finden Sie in err.h