Is `IS_ERR_VALUE` indicates that the return value is invalid?
In kernel source, `IS_ERR_VALUE` is defined: #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) It's usage can be realized literally, but definition is not. Can I use this macro to determines the kernel API's result is valid? Example: if (IS_ERR_VALUE(filp_open(device))) { filp_close(device); }
Hi Please find the example to user file open in kernel below. source file #linux/sound/sound_firmware.c struct file* filp; filp = filp_open(fn, 0, 0); if (IS_ERR(filp)) { printk(KERN_INFO "Unable to load '%s'.\n", fn); return 0; } IS_ERR expand to below example. #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) static inline long __must_check IS_ERR(__force const void *ptr) { return IS_ERR_VALUE((unsigned long)ptr); } -Anand Moon On Thursday, November 7, 2013 11:24 AM, 乃宏周 <naive231@gmail.com> wrote: In kernel source, `IS_ERR_VALUE` is defined: #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) It's usage can be realized literally, but definition is not. Can I use this macro to determines the kernel API's result is valid? Example: if (IS_ERR_VALUE(filp_open(device))) { filp_close(device); } _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Wed, Nov 20, 2013 at 5:12 PM, Anand Moon <moon.linux@yahoo.com> wrote:
Hi
Please find the example to user file open in kernel below. source file #linux/sound/sound_firmware.c
struct file* filp;
filp = filp_open(fn, 0, 0); if (IS_ERR(filp)) { printk(KERN_INFO "Unable to load '%s'.\n", fn); return 0; }
IS_ERR expand to below example.
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
IMHO, IS_ERR is a check to make sure that error number is not greater that maximum error number defined, in other word, is it still valid or not. Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
participants (3)
-
Anand Moon -
Mulyadi Santosa -
乃宏周