GNU/Linux >> Belajar Linux >  >> Linux

IS_ERR() makro di Linux

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


Linux
  1. Kesalahan c ++ Linux:referensi tidak terdefinisi ke 'dlopen'

  2. Kesalahan menginstal paket R untuk Linux

  3. Di kernel linux 2.6.26, saya menemukan #define atom_read(v) ((v)->counter + 0), mengapa +0?

  1. Memecahkan masalah Kesalahan "Sertifikat TLS yang Tidak Dapat Diterima" di Linux

  2. Bagaimana cara memperbaiki kesalahan Kegagalan Otentikasi Cron di Linux?

  3. Kesalahan menginstal Arch Linux

  1. Linux – Terminal Gnome Gagal Memulai?

  2. Konfigurasi dan Tuning OpenVAS di Kali Linux

  3. Kesalahan Android Studio 13 =izin ditolak di linux