aboutsummaryrefslogtreecommitdiffstats
path: root/lib/libtle_l4p/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libtle_l4p/debug.h')
-rw-r--r--lib/libtle_l4p/debug.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/libtle_l4p/debug.h b/lib/libtle_l4p/debug.h
new file mode 100644
index 0000000..b2a8b52
--- /dev/null
+++ b/lib/libtle_l4p/debug.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2016 Intel Corporation.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FUNC_SEQ_VERIFY(v) do { \
+ static uint64_t nb_call; \
+ static typeof(v) x; \
+ if (nb_call++ != 0) \
+ RTE_VERIFY(tcp_seq_leq(x, v)); \
+ x = (v); \
+} while (0)
+
+#define FUNC_VERIFY(e, c) do { \
+ static uint64_t nb_call; \
+ if ((e) == 0) \
+ nb_call++; \
+ else \
+ nb_call = 0; \
+ RTE_VERIFY(nb_call != (c)); \
+} while (0)
+
+#define FUNC_STAT(v, c) do { \
+ static uint64_t nb_call, nb_data; \
+ nb_call++; \
+ nb_data += (v); \
+ if ((nb_call & ((c) - 1)) == 0) { \
+ printf("%s#%d@%u: nb_call=%lu, avg(" #v ")=%#Lf\n", \
+ __func__, __LINE__, rte_lcore_id(), nb_call, \
+ (long double)nb_data / nb_call); \
+ nb_call = 0; \
+ nb_data = 0; \
+ } \
+} while (0)
+
+#define FUNC_TM_STAT(v, c) do { \
+ static uint64_t nb_call, nb_data; \
+ static uint64_t cts, pts, sts; \
+ cts = rte_rdtsc(); \
+ if (pts != 0) \
+ sts += cts - pts; \
+ pts = cts; \
+ nb_call++; \
+ nb_data += (v); \
+ if ((nb_call & ((c) - 1)) == 0) { \
+ printf("%s#%d@%u: nb_call=%lu, " \
+ "avg(" #v ")=%#Lf, " \
+ "avg(cycles)=%#Lf, " \
+ "avg(cycles/" #v ")=%#Lf\n", \
+ __func__, __LINE__, rte_lcore_id(), nb_call, \
+ (long double)nb_data / nb_call, \
+ (long double)sts / nb_call, \
+ (long double)sts / nb_data); \
+ nb_call = 0; \
+ nb_data = 0; \
+ sts = 0; \
+ } \
+} while (0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DEBUG_H_ */