Home | History | Annotate | Download | only in linux
      1 #ifndef _LINUX_ERR_H
      2 #define _LINUX_ERR_H
      3 
      4 #include <linux/compiler.h>
      5 
      6 #include <asm/errno.h>
      7 
      8 /*
      9  * Kernel pointers have redundant information, so we can use a
     10  * scheme where we can return either an error code or a dentry
     11  * pointer with the same return value.
     12  *
     13  * This should be a per-architecture thing, to allow different
     14  * error and pointer decisions.
     15  */
     16 #define MAX_ERRNO	4095
     17 
     18 #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
     19 
     20 static inline void *ERR_PTR(long error)
     21 {
     22 	return (void *) error;
     23 }
     24 
     25 static inline long PTR_ERR(const void *ptr)
     26 {
     27 	return (long) ptr;
     28 }
     29 
     30 static inline long IS_ERR(const void *ptr)
     31 {
     32 	return IS_ERR_VALUE((unsigned long)ptr);
     33 }
     34 
     35 #endif /* _LINUX_ERR_H */
     36