GNU/Linux >> LINUX-Kenntnisse >  >> Linux

IS_ERR()-Makro unter Linux

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


Linux
  1. Linux c++ Fehler:undefinierter Verweis auf „dlopen“

  2. Fehler beim Installieren des R-Pakets für Linux

  3. Fehler beim Installieren von Arch Linux

  4. Fehler beim Initialisieren der SD-Karte unter Linux

  5. Samba 4.9.0 ./configure lmdb-Fehler

[Gelöst] „error:rpmdbNextIterator:skipping“ In Fedora Linux

Virtualbox Guru Meditation Kritischer Fehler in Linux

Fehlerbehebung „Inakzeptables TLS-Zertifikat“-Fehler in Linux

Fehlerbehebung „Bash:Command Not Found“-Fehler in Linux

eth0 NIC Link ist Down-Fehler unter Linux

Im Linux-Kernel 2.6.26 fand ich #define atomic_read(v) ((v)->counter + 0), warum +0?