GNU/Linux >> Znalost Linux >  >> Linux

Makro IS_ERR() v Linuxu

Dejte si pozor na nástrahy:

#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO       4095

To zahrnuje -1 až -4095, což představuje kód chyby, nikoli číslo pod 4096, ani NULL (0). Každá hodnota od 0 do 4294963201 (0xfffff001) není považována za chybu. Nepoužívejte ji k pokrytí kontroly NULL.


Pokud chcete vědět, na co se makro rozšiřuje, jednoduše zkompilujte svůj soubor pomocí -E možnost gcc, která provede pouze předběžné zpracování. Bude obsahovat všechna záhlaví a rozbalí všechna makra.

Makro se samo o sobě „neprovádí“, je to jen věc typu „vyhledat a nahradit“.


Testuje, zda má být dodaný ukazatel považován za chybovou hodnotu .

Nekontroluje, zda je ukazatel platný.

Ve vašem kódu se IS_ERR používá ke kontrole, zda class_create podařilo vytvořit ebbcharClass . Pokud dojde k chybě, zrušte registraci ovladače znaku a signalizujte chybu.

MAKRA a inline funkce najdete v err.h


Linux
  1. Android Studio error 13=oprávnění v linuxu odepřeno

  2. Chyba při instalaci balíčku R pro Linux

  3. V linuxovém jádře 2.6.26 jsem našel #define atomic_read(v) ((v)->counter + 0), proč +0?

  1. Odstraňování problémů Chyba „Nepřijatelný certifikát TLS“ v systému Linux

  2. Chyba při inicializaci karty SD v systému Linux

  3. Chyba Samba 4.9.0 ./configure lmdb

  1. Jak opravit chybu Cron Authentication Failure v Linuxu?

  2. Konfigurace a ladění OpenVAS v Kali Linuxu

  3. cp:vynechání adresáře – chyba při kopírování adresáře v Linuxu