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