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