1#ifndef PROCPS_PROC_PROCPS_H 2#define PROCPS_PROC_PROCPS_H 3 4#ifdef __cplusplus 5#define EXTERN_C_BEGIN extern "C" { 6#define EXTERN_C_END } 7#else 8#define EXTERN_C_BEGIN 9#define EXTERN_C_END 10#endif 11 12#if !defined(restrict) && __STDC_VERSION__ < 199901 13#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 // maybe 92 or 95 ? 14#define restrict __restrict__ 15#else 16#warning No restrict keyword? 17#define restrict 18#endif 19#endif 20 21// since gcc-2.5 22#define NORETURN __attribute__((__noreturn__)) 23 24#if __GNUC__ > 2 || __GNUC_MINOR__ >= 96 25// won't alias anything, and aligned enough for anything 26#define MALLOC __attribute__ ((__malloc__)) 27// tell gcc what to expect: if (unlikely(err)) die(err); 28#define likely(x) __builtin_expect(!!(x),1) 29#define unlikely(x) __builtin_expect(!!(x),0) 30#define expected(x,y) __builtin_expect((x),(y)) 31#else 32#define MALLOC 33#define likely(x) (x) 34#define unlikely(x) (x) 35#define expected(x,y) (x) 36#endif 37 38#endif 39