mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-common
synced 2025-12-28 16:14:34 +00:00
server/common: introduce common/spice_common.h
move all the ASSERT/PANIC/PANIC_ON/red_error/red_printf* macros to a common file to be used with ring.h that is going to be used externally (by spice-gtk).
This commit is contained in:
parent
597767d983
commit
db6835f616
70
spice_common.h
Normal file
70
spice_common.h
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef H_SPICE_COMMON
|
||||
#define H_SPICE_COMMON
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define ASSERT(x) if (!(x)) { \
|
||||
printf("%s: ASSERT %s failed\n", __FUNCTION__, #x); \
|
||||
abort(); \
|
||||
}
|
||||
|
||||
#define PANIC(format, ...) { \
|
||||
printf("%s: panic: " format "\n", __FUNCTION__, ## __VA_ARGS__ ); \
|
||||
abort(); \
|
||||
}
|
||||
|
||||
#define PANIC_ON(x) if ((x)) { \
|
||||
printf("%s: panic %s\n", __FUNCTION__, #x); \
|
||||
abort(); \
|
||||
}
|
||||
|
||||
#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__ ); \
|
||||
} \
|
||||
}
|
||||
|
||||
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
|
||||
Loading…
Reference in New Issue
Block a user