1*cfa460adSWilliam Juul #ifndef _LINUX_ERR_H 2*cfa460adSWilliam Juul #define _LINUX_ERR_H 3*cfa460adSWilliam Juul 4*cfa460adSWilliam Juul /* XXX U-BOOT XXX */ 5*cfa460adSWilliam Juul #if 0 6*cfa460adSWilliam Juul #include <linux/compiler.h> 7*cfa460adSWilliam Juul #else 8*cfa460adSWilliam Juul #include <linux/mtd/compat.h> 9*cfa460adSWilliam Juul #endif 10*cfa460adSWilliam Juul 11*cfa460adSWilliam Juul #include <asm/errno.h> 12*cfa460adSWilliam Juul 13*cfa460adSWilliam Juul 14*cfa460adSWilliam Juul /* 15*cfa460adSWilliam Juul * Kernel pointers have redundant information, so we can use a 16*cfa460adSWilliam Juul * scheme where we can return either an error code or a dentry 17*cfa460adSWilliam Juul * pointer with the same return value. 18*cfa460adSWilliam Juul * 19*cfa460adSWilliam Juul * This should be a per-architecture thing, to allow different 20*cfa460adSWilliam Juul * error and pointer decisions. 21*cfa460adSWilliam Juul */ 22*cfa460adSWilliam Juul #define MAX_ERRNO 4095 23*cfa460adSWilliam Juul 24*cfa460adSWilliam Juul #ifndef __ASSEMBLY__ 25*cfa460adSWilliam Juul 26*cfa460adSWilliam Juul #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO) 27*cfa460adSWilliam Juul 28*cfa460adSWilliam Juul static inline void *ERR_PTR(long error) 29*cfa460adSWilliam Juul { 30*cfa460adSWilliam Juul return (void *) error; 31*cfa460adSWilliam Juul } 32*cfa460adSWilliam Juul 33*cfa460adSWilliam Juul static inline long PTR_ERR(const void *ptr) 34*cfa460adSWilliam Juul { 35*cfa460adSWilliam Juul return (long) ptr; 36*cfa460adSWilliam Juul } 37*cfa460adSWilliam Juul 38*cfa460adSWilliam Juul static inline long IS_ERR(const void *ptr) 39*cfa460adSWilliam Juul { 40*cfa460adSWilliam Juul return IS_ERR_VALUE((unsigned long)ptr); 41*cfa460adSWilliam Juul } 42*cfa460adSWilliam Juul 43*cfa460adSWilliam Juul #endif 44*cfa460adSWilliam Juul 45*cfa460adSWilliam Juul #endif /* _LINUX_ERR_H */ 46