X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=include%2Flinux%2Ferr.h;h=ec87f3142bf30940c31911e71e6638d749de8f04;hb=d458a9dfc4de24870b8c747484b1988726534bee;hp=ff71d2af5da33ac711da7f64957d8d93bad4f91f;hpb=105adfc63f921a9976c5abc4ff079e9fec197ed7;p=linux-2.6-omap-h63xx.git diff --git a/include/linux/err.h b/include/linux/err.h index ff71d2af5da..ec87f3142bf 100644 --- a/include/linux/err.h +++ b/include/linux/err.h @@ -13,7 +13,11 @@ * This should be a per-architecture thing, to allow different * error and pointer decisions. */ -#define IS_ERR_VALUE(x) unlikely((x) > (unsigned long)-1000L) +#define MAX_ERRNO 4095 + +#ifndef __ASSEMBLY__ + +#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) static inline void *ERR_PTR(long error) { @@ -30,4 +34,19 @@ static inline long IS_ERR(const void *ptr) return IS_ERR_VALUE((unsigned long)ptr); } +/** + * ERR_CAST - Explicitly cast an error-valued pointer to another pointer type + * @ptr: The pointer to cast. + * + * Explicitly cast an error-valued pointer to another pointer type in such a + * way as to make it clear that's what's going on. + */ +static inline void *ERR_CAST(const void *ptr) +{ + /* cast away the const */ + return (void *) ptr; +} + +#endif + #endif /* _LINUX_ERR_H */