落とし穴に注意してください:
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO 4095
これはエラー コードを表す -1 から -4095 をカバーし、4096 未満の数値や NULL (0) ではありません。0 から 4294963201 (0xfffff001) までのすべての値はエラーではないと見なされます。>
マクロの展開先を知りたい場合は、 -E
を使用してファイルをコンパイルしてください 前処理のみを行うgccのオプション。すべてのヘッダーが含まれ、すべてのマクロが展開されます。
マクロ自体は「実行」されるのではなく、単に「検索と置換」タイプのものです。
指定されたポインタがエラー値と見なされるかどうかをテストします .
ポインターが有効かどうかはチェックしません。
コードで IS_ERR を使用して class_create
かどうかを確認します ebbcharClass
の作成に成功しました .エラーが発生した場合は、char ドライバーの登録を解除し、エラーを通知します。
err.h
に MACRO とインライン関数があります。