Hati-hati terhadap jebakan:
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
#define MAX_ERRNO 4095
Ini mencakup -1 hingga -4095, yang mewakili kode kesalahan, bukan angka di bawah 4096, atau NULL (0). Setiap nilai dari 0 hingga 4294963201 (0xfffff001) dianggap tidak ada kesalahan. Jangan gunakan untuk menutupi pemeriksaan NULL.
Jika Anda ingin mengetahui untuk apa makro diperluas, cukup kompilasi file Anda menggunakan -E
opsi gcc, yang hanya akan melakukan pra-pemrosesan. Ini akan menyertakan semua header dan memperluas semua makro.
Makro tidak "dieksekusi" sendiri, itu hanya jenis "telusuri dan ganti".
Menguji apakah penunjuk yang diberikan harus dianggap sebagai nilai kesalahan .
Itu tidak memeriksa apakah penunjuk itu valid.
Dalam kode Anda IS_ERR digunakan untuk memeriksa apakah class_create
berhasil membuat ebbcharClass
. Jika terjadi kesalahan, batalkan pendaftaran driver char dan tandai kesalahan.
Anda dapat menemukan MAKRO dan fungsi inline di err.h