Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
c11 safe string handling support
[vpp.git]
/
src
/
vppinfra
/
elog.c
diff --git
a/src/vppinfra/elog.c
b/src/vppinfra/elog.c
index
12e3f5d
..
8e3f6c1
100644
(file)
--- a/
src/vppinfra/elog.c
+++ b/
src/vppinfra/elog.c
@@
-46,7
+46,7
@@
static inline void
elog_lock (elog_main_t * em)
{
if (PREDICT_FALSE (em->lock != 0))
elog_lock (elog_main_t * em)
{
if (PREDICT_FALSE (em->lock != 0))
- while (
__sync_lock_test_and_set (em->lock, 1
))
+ while (
clib_atomic_test_and_set (em->lock
))
;
}
;
}
@@
-108,6
+108,13
@@
elog_event_type_register (elog_main_t * em, elog_event_type_t * t)
elog_lock (em);
elog_lock (em);
+ /* Multiple simultaneous registration attempts, */
+ if (t->type_index_plus_one > 0)
+ {
+ elog_unlock (em);
+ return t->type_index_plus_one - 1;
+ }
+
l = vec_len (em->event_types);
t->type_index_plus_one = 1 + l;
l = vec_len (em->event_types);
t->type_index_plus_one = 1 + l;
@@
-406,7
+413,11
@@
elog_time_now (elog_time_stamp_t * et)
#ifdef CLIB_UNIX
{
#include <sys/syscall.h>
#ifdef CLIB_UNIX
{
#include <sys/syscall.h>
+#ifdef __APPLE__
+ clock_gettime (CLOCK_REALTIME, &ts);
+#else
syscall (SYS_clock_gettime, CLOCK_REALTIME, &ts);
syscall (SYS_clock_gettime, CLOCK_REALTIME, &ts);
+#endif
cpu_time_now = clib_cpu_time_now ();
/* Subtract 3/30/2017's worth of seconds to retain precision */
os_time_now_nsec = 1e9 * (ts.tv_sec - 1490885108) + ts.tv_nsec;
cpu_time_now = clib_cpu_time_now ();
/* Subtract 3/30/2017's worth of seconds to retain precision */
os_time_now_nsec = 1e9 * (ts.tv_sec - 1490885108) + ts.tv_nsec;
@@
-458,7
+469,7
@@
elog_alloc (elog_main_t * em, u32 n_events)
void
elog_init (elog_main_t * em, u32 n_events)
{
void
elog_init (elog_main_t * em, u32 n_events)
{
- memset (em, 0, sizeof (em[0]));
+
clib_
memset (em, 0, sizeof (em[0]));
em->lock = 0;
em->lock = 0;
@@
-625,7
+636,7
@@
elog_merge (elog_main_t * dst, u8 * dst_tag, elog_main_t * src, u8 * src_tag,
elog_track_t newt;
int i;
elog_track_t newt;
int i;
- memset (&newt, 0, sizeof (newt));
+
clib_
memset (&newt, 0, sizeof (newt));
/* Acquire src and dst events */
elog_get_events (src);
/* Acquire src and dst events */
elog_get_events (src);
@@
-725,7
+736,7
@@
elog_merge (elog_main_t * dst, u8 * dst_tag, elog_main_t * src, u8 * src_tag,
/*
* Move the earlier set of events later, to avoid creating
/*
* Move the earlier set of events later, to avoid creating
- * events which prece
ed
the Big Bang (aka have negative timestamps).
+ * events which prece
de
the Big Bang (aka have negative timestamps).
*
* Not to any scale, we have something like the following picture:
*
*
* Not to any scale, we have something like the following picture:
*