linux-bk/include/linux/compiler.h
<<
>>
Prefs
   1#ifndef __LINUX_COMPILER_H
   2#define __LINUX_COMPILER_H
   3
   4#ifdef __CHECKER__
   5# define __user         __attribute__((noderef, address_space(1)))
   6# define __kernel       /* default address space */
   7# define __safe         __attribute__((safe))
   8# define __force        __attribute__((force))
   9extern void __chk_user_ptr(void __user *);
  10#else
  11# define __user
  12# define __kernel
  13# define __safe
  14# define __force
  15# define __chk_user_ptr(x) (void)0
  16#endif
  17
  18#ifdef __KERNEL__
  19
  20#ifndef __ASSEMBLY__
  21#if __GNUC__ > 3
  22# include <linux/compiler-gcc+.h>       /* catch-all for GCC 4, 5, etc. */
  23#elif __GNUC__ == 3
  24# include <linux/compiler-gcc3.h>
  25#elif __GNUC__ == 2
  26# include <linux/compiler-gcc2.h>
  27#else
  28# error Sorry, your compiler is too old/not recognized.
  29#endif
  30#endif
  31
  32/* Intel compiler defines __GNUC__. So we will overwrite implementations
  33 * coming from above header files here
  34 */
  35#ifdef __INTEL_COMPILER
  36# include <linux/compiler-intel.h>
  37#endif
  38
  39/*
  40 * Generic compiler-dependent macros required for kernel
  41 * build go below this comment. Actual compiler/compiler version
  42 * specific implementations come from the above header files
  43 */
  44
  45#define likely(x)       __builtin_expect(!!(x), 1)
  46#define unlikely(x)     __builtin_expect(!!(x), 0)
  47
  48/* Optimization barrier */
  49#ifndef barrier
  50# define barrier() __memory_barrier()
  51#endif
  52
  53#ifndef RELOC_HIDE
  54# define RELOC_HIDE(ptr, off)                                   \
  55  ({ unsigned long __ptr;                                       \
  56     __ptr = (unsigned long) (ptr);                             \
  57    (typeof(ptr)) (__ptr + (off)); })
  58#endif
  59
  60#endif /* __KERNEL__ */
  61
  62/*
  63 * Allow us to mark functions as 'deprecated' and have gcc emit a nice
  64 * warning for each use, in hopes of speeding the functions removal.
  65 * Usage is:
  66 *              int __deprecated foo(void)
  67 */
  68#ifndef __deprecated
  69# define __deprecated           /* unimplemented */
  70#endif
  71
  72#ifndef __must_check
  73#define __must_check
  74#endif
  75
  76/*
  77 * Allow us to avoid 'defined but not used' warnings on functions and data,
  78 * as well as force them to be emitted to the assembly file.
  79 *
  80 * As of gcc 3.3, static functions that are not marked with attribute((used))
  81 * may be elided from the assembly file.  As of gcc 3.3, static data not so
  82 * marked will not be elided, but this may change in a future gcc version.
  83 *
  84 * In prior versions of gcc, such functions and data would be emitted, but
  85 * would be warned about except with attribute((unused)).
  86 */
  87#ifndef __attribute_used__
  88# define __attribute_used__     /* unimplemented */
  89#endif
  90
  91/*
  92 * From the GCC manual:
  93 *
  94 * Many functions have no effects except the return value and their
  95 * return value depends only on the parameters and/or global
  96 * variables.  Such a function can be subject to common subexpression
  97 * elimination and loop optimization just as an arithmetic operator
  98 * would be.
  99 * [...]
 100 */
 101#ifndef __attribute_pure__
 102# define __attribute_pure__     /* unimplemented */
 103#endif
 104
 105/*
 106 * From the GCC manual:
 107 *
 108 * Many functions do not examine any values except their arguments,
 109 * and have no effects except the return value.  Basically this is
 110 * just slightly more strict class than the `pure' attribute above,
 111 * since function is not allowed to read global memory.
 112 *
 113 * Note that a function that has pointer arguments and examines the
 114 * data pointed to must _not_ be declared `const'.  Likewise, a
 115 * function that calls a non-`const' function usually must not be
 116 * `const'.  It does not make sense for a `const' function to return
 117 * `void'.
 118 */
 119#ifndef __attribute_const__
 120# define __attribute_const__    /* unimplemented */
 121#endif
 122
 123#ifndef noinline
 124#define noinline
 125#endif
 126
 127#endif /* __LINUX_COMPILER_H */
 128
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.