Re: return negative number for unsigned long function in kernel

From: H. Peter Anvin
Date: Tue Mar 06 2007 - 19:39:41 EST


Chen, Dongliang wrote:
There are lots of functions in the Linux kernel that are declared as
unsigned long, but the return value is negative integer while error
occurred. An example of these functions is do_mmap_pgoff in mm/mmap.c,
which is defined as:

unsigned long do_mmap_pgoff(....)

In this function, it returns -ENODEV, -EPERM, -ENOMEM, -EINVAL, -EAGAIN,
-EACCESS depends on the error type. My question is how should the caller
perform error check based on the return value?


If you want to test for errorness, you could use the macro IS_ERR_VALUE(). Unfortunately the macro isn't all that safe, in that it will give you the wrong answer if it's ever used on something that *isn't* an unsigned long.

-hpa

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/