Attention aux écueils :
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO 4095
Cela couvre -1 à -4095, qui représente le code d'erreur, pas un nombre inférieur à 4096, ni NULL (0). Chaque valeur de 0 à 4294963201 (0xfffff001) est considérée comme aucune erreur. Ne l'utilisez pas pour couvrir la vérification NULL.
Si vous voulez savoir à quoi la macro se développe, compilez simplement votre fichier en utilisant le -E
option de gcc, qui ne fera que le pré-traitement. Il inclura tous les en-têtes et développera toutes les macros.
La macro n'est pas "exécutée" en soi, c'est juste un type de "recherche et remplacement".
Teste si le pointeur fourni doit être considéré comme une valeur d'erreur .
Il ne vérifie pas si le pointeur est valide.
Dans votre code IS_ERR est utilisé pour vérifier si class_create
création réussie de ebbcharClass
. Si une erreur se produit, désenregistrez le pilote char et signalez l'erreur.
Vous pouvez trouver des MACRO et des fonctions en ligne dans err.h