File: /Users/paulross/dev/linux/linux-3.13/include/linux/err.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       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: #ifndef __ASSEMBLY__
      19: 
      20: #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
      21: 
      22: static inline void * __must_check ERR_PTR(long error)
      23: {
      24:     return (void *) error;
      25: }
      26: 
      27: static inline long __must_check PTR_ERR(__force const void *ptr)
      28: {
      29:     return (long) ptr;
      30: }
      31: 
      32: static inline long __must_check IS_ERR(__force const void *ptr)
      33: {
      34:     return IS_ERR_VALUE((unsigned long)ptr);
      35: }
      36: 
      37: static inline long __must_check IS_ERR_OR_NULL(__force const void *ptr)
      38: {
      39:     return !ptr || IS_ERR_VALUE((unsigned long)ptr);
      40: }
      41: 
      42: /**
      43:  * ERR_CAST - Explicitly cast an error-valued pointer to another pointer type
      44:  * @ptr: The pointer to cast.
      45:  *
      46:  * Explicitly cast an error-valued pointer to another pointer type in such a
      47:  * way as to make it clear that's what's going on.
      48:  */
      49: static inline void * __must_check ERR_CAST(__force const void *ptr)
      50: {
      51:     /* cast away the const */
      52:     return (void *) ptr;
      53: }
      54: 
      55: static inline int __must_check PTR_ERR_OR_ZERO(__force const void *ptr)
      56: {
      57:     if (IS_ERR(ptr))
      58:         return PTR_ERR(ptr);
      59:     else
      60:         return 0;
      61: }
      62: 
      63: /* Deprecated */
      64: #define PTR_RET(p) PTR_ERR_OR_ZERO(p)
      65: 
      66: #endif
      67: 
      68: #endif /* _LINUX_ERR_H */
      69: