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