7
#include <sys/signal.h>
11
#define xglue(x, y) x ## y
12
#define glue(x, y) xglue(x, y)
13
#define stringify(s) tostring(s)
14
#define tostring(s) #s
19
#define __builtin_expect(x, n) (x)
22
#define likely(x) __builtin_expect(!!(x), 1)
23
#define unlikely(x) __builtin_expect(!!(x), 0)
27
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER)
30
#define container_of(ptr, type, member) ({ \
31
const typeof(((type *) 0)->member) *__mptr = (ptr); \
32
(type *) ((char *) __mptr - offsetof(type, member));})
36
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
39
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
43
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
47
#if (__GNUC__ < 3) || defined(__APPLE__)
48
#define always_inline inline
50
#define always_inline __attribute__ (( always_inline )) __inline__
51
#define inline always_inline
54
#define inline always_inline
58
#define REGPARM __attribute((regparm(3)))
63
#define qemu_printf printf
65
#if defined (__GNUC__) && defined (__GNUC_MINOR_)
66
# define QEMU_GNUC_PREREQ(maj, min) \
67
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
69
# define QEMU_GNUC_PREREQ(maj, min) 0
72
void *qemu_memalign(size_t alignment, size_t size);
73
void *qemu_vmalloc(size_t size);
74
void qemu_vfree(void *ptr);
76
int qemu_create_pidfile(const char *filename);
85
int qemu_gettimeofday(qemu_timeval *tp);
87
typedef struct timeval qemu_timeval;
88
#define qemu_gettimeofday(tp) gettimeofday(tp, NULL);
6
int qemu_vsnprintf(char *buf, int buflen, const char *fmt, va_list args);
7
void qemu_vprintf(const char *fmt, va_list ap);
8
void qemu_printf(const char *fmt, ...);
10
void *qemu_malloc(size_t size);
11
void *qemu_mallocz(size_t size);
12
void qemu_free(void *ptr);
14
void *get_mmap_addr(unsigned long size);
16
/* specific kludges for OS compatibility (should be moved elsewhere) */
17
#if defined(__i386__) && !defined(CONFIG_SOFTMMU) && !defined(CONFIG_USER_ONLY)
19
/* disabled pthread version of longjmp which prevent us from using an
20
alternative signal stack */
21
extern void __longjmp(jmp_buf env, int val);
22
#define longjmp __longjmp