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