diff options
author | Yaniv Kamay <ykamay@redhat.com> | 2009-09-19 21:25:46 +0300 |
---|---|---|
committer | Yaniv Kamay <ykamay@redhat.com> | 2009-10-14 15:06:41 +0200 |
commit | c1b79eb035fa158fb2ac3bc8e559809611070016 (patch) | |
tree | 3348dd749a700dedf87c9b16fe8be77c62928df8 /server/red_common.h | |
download | spice-c1b79eb035fa158fb2ac3bc8e559809611070016.tar.gz spice-c1b79eb035fa158fb2ac3bc8e559809611070016.tar.xz spice-c1b79eb035fa158fb2ac3bc8e559809611070016.zip |
fresh start
Diffstat (limited to 'server/red_common.h')
-rw-r--r-- | server/red_common.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/server/red_common.h b/server/red_common.h new file mode 100644 index 00000000..b397be51 --- /dev/null +++ b/server/red_common.h @@ -0,0 +1,99 @@ +/* + Copyright (C) 2009 Red Hat, Inc. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _H_RED_COMMON +#define _H_RED_COMMON + +#include <sys/uio.h> +#include <openssl/ssl.h> + +#include "red.h" + +#ifndef MIN +#define MIN(x, y) (((x) <= (y)) ? (x) : (y)) +#endif +#ifndef MAX +#define MAX(x, y) (((x) >= (y)) ? (x) : (y)) +#endif + +#ifndef ABS +#define ABS(a) ((a) >= 0 ? (a) : -(a)) +#endif + +#ifndef ALIGN +#define ALIGN(a, b) (((a) + ((b) - 1)) & ~((b) - 1)) +#endif + +#define ASSERT(x) if (!(x)) { \ + printf("%s: ASSERT %s failed\n", __FUNCTION__, #x); \ + abort(); \ +} + +#define PANIC(str) { \ + printf("%s: panic: %s\n", __FUNCTION__, str); \ + abort(); \ +} + +#define TRUE 1 +#define FALSE 0 + +#define red_error(format, ...) { \ + printf("%s: " format "\n", __FUNCTION__, ## __VA_ARGS__ ); \ + abort(); \ +} + +#define red_printf(format, ...) \ + printf("%s: " format "\n", __FUNCTION__, ## __VA_ARGS__ ) + +#define red_printf_once(format, ...) { \ + static int do_print = TRUE; \ + if (do_print) { \ + do_print = FALSE; \ + printf("%s: " format "\n", __FUNCTION__, ## __VA_ARGS__ ); \ + } \ +} + +#define red_printf_some(every, format, ...) { \ + static int count = 0; \ + if (count++ % (every) == 0) { \ + printf("%s: " format "\n", __FUNCTION__, ## __VA_ARGS__ ); \ + } \ +} + +#define OFFSETOF(type, member) ((unsigned long)&((type *)0)->member) +#define CONTAINEROF(ptr, type, member) \ + ((type *)((uint8_t *)(ptr) - OFFSETOF(type, member))) + +typedef enum { + IMAGE_COMPRESS_INVALID, + IMAGE_COMPRESS_AUTO_GLZ, + IMAGE_COMPRESS_AUTO_LZ, + IMAGE_COMPRESS_QUIC, + IMAGE_COMPRESS_GLZ, + IMAGE_COMPRESS_LZ, + IMAGE_COMPRESS_OFF, +} image_compression_t; + +static inline uint64_t get_time_stamp() +{ + struct timespec time_space; + clock_gettime(CLOCK_MONOTONIC, &time_space); + return time_space.tv_sec * 1000 * 1000 * 1000 + time_space.tv_nsec; +} + +#endif + |