Commit aacb2ff7 authored by Cedric Roux's avatar Cedric Roux
Browse files

send time in events

this calls clock_gettime for each active T macro, hopefully it
does not eat too much CPU

can be deactivated by commenting one line in T_defs.h
parent 3e38cd26
......@@ -7,6 +7,10 @@
#include "T_defs.h"
#ifdef T_SEND_TIME
#include <time.h>
#endif
/* T message IDs */
#include "T_IDs.h"
......@@ -187,6 +191,25 @@ extern T_cache_t *T_cache;
} while (0)
#endif
#ifdef T_SEND_TIME
#define T_HEADER(x) \
do { \
if (!__builtin_types_compatible_p(typeof(x), struct T_header *)) { \
printf("%s:%d:%s: " \
"bad use of T, pass a message ID as first parameter\n", \
__FILE__, __LINE__, __FUNCTION__); \
abort(); \
} \
struct timespec T_HEADER_time; \
if (clock_gettime(CLOCK_REALTIME, &T_HEADER_time)) abort(); \
memcpy(T_LOCAL_buf, &T_HEADER_time, sizeof(struct timespec)); \
T_LOCAL_size += sizeof(struct timespec); \
T_PUT_int(1, (int)(uintptr_t)(x)); \
} while (0)
#else /* #ifdef T_SEND_TIME */
#define T_HEADER(x) \
do { \
if (!__builtin_types_compatible_p(typeof(x), struct T_header *)) { \
......@@ -198,6 +221,8 @@ extern T_cache_t *T_cache;
T_PUT_int(1, (int)(uintptr_t)(x)); \
} while (0)
#endif /* #ifdef T_SEND_TIME */
#define T1(t) \
do { \
if (T_ACTIVE(t)) { \
......
#ifndef _T_defs_H_
#define _T_defs_H_
/* comment (and recompile everything) to not send time in events */
#define T_SEND_TIME
/* maximum number of arguments for the T macro */
#define T_MAX_ARGS 16
......
......@@ -84,10 +84,15 @@ int fullread(int fd, void *_buf, int count)
event get_event(int s, char *v, void *d)
{
struct timespec t;
int type;
int32_t length;
fullread(s, &length, 4);
#ifdef T_SEND_TIME
fullread(s, &t, sizeof(struct timespec));
length -= sizeof(struct timespec);
#endif
fullread(s, &type, sizeof(int));
length -= sizeof(int);
fullread(s, v, length);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment