1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef _TOOLS_LINUX_COMPILER_H_
- #define _TOOLS_LINUX_COMPILER_H_
- /* Optimization barrier */
- /* The "volatile" is due to gcc bugs */
- #define barrier() __asm__ __volatile__("": : :"memory")
- #ifndef __always_inline
- # define __always_inline inline __attribute__((always_inline))
- #endif
- #define __user
- #ifndef __attribute_const__
- # define __attribute_const__
- #endif
- #ifndef __maybe_unused
- # define __maybe_unused __attribute__((unused))
- #endif
- #ifndef __packed
- # define __packed __attribute__((__packed__))
- #endif
- #ifndef __force
- # define __force
- #endif
- #ifndef __weak
- # define __weak __attribute__((weak))
- #endif
- #ifndef likely
- # define likely(x) __builtin_expect(!!(x), 1)
- #endif
- #ifndef unlikely
- # define unlikely(x) __builtin_expect(!!(x), 0)
- #endif
- #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
- #endif /* _TOOLS_LINUX_COMPILER_H */
|