summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch114
-rw-r--r--recipes-extended/dpdk/dpdk_23.11.1.bb3
2 files changed, 116 insertions, 1 deletions
diff --git a/recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch b/recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch
new file mode 100644
index 0000000..56b4b43
--- /dev/null
+++ b/recipes-extended/dpdk/dpdk/0001-Add-new-tracepoint-function-for-type-time_t.patch
@@ -0,0 +1,114 @@
1From a97f93abc34731b73689c0c78bd189a91625779f Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Tue, 29 Apr 2025 10:14:13 +0800
4Subject: [PATCH] Add new tracepoint function for type time_t
5
6To support Y2038 issue, for 32bit system, -D_TIME_BITS=64 is passed to
7gcc, struct timespec time->tv_sec is 64bit, but size_t is 32bits, so
8dpdk will compile failed with error:
9"../git/lib/ethdev/ethdev_trace.h: In function
10'rte_eth_trace_timesync_write_time':
11../git/lib/eal/include/rte_common.h:498:55: error: size of unnamed array
12is negative
13 498 | #define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 -
14 2*!!(condition)]))"
15
16Add a new tracepoint function for type time_t to fix this issue
17
18Upstream-Status: Submitted [https://patchwork.dpdk.org/project/dpdk/patch/20250527120404.2027529-1-changqing.li@windriver.com/]
19
20Signed-off-by: Changqing Li <changqing.li@windriver.com>
21---
22 lib/eal/common/eal_common_trace_ctf.c | 5 +++++
23 lib/eal/include/rte_trace_point.h | 4 ++++
24 lib/ethdev/ethdev_trace.h | 8 ++++----
25 3 files changed, 13 insertions(+), 4 deletions(-)
26
27diff --git a/lib/eal/common/eal_common_trace_ctf.c b/lib/eal/common/eal_common_trace_ctf.c
28index 04c4f71..055555e 100644
29--- a/lib/eal/common/eal_common_trace_ctf.c
30+++ b/lib/eal/common/eal_common_trace_ctf.c
31@@ -88,6 +88,11 @@ meta_data_type_emit(char **meta, int *offset)
32 "typealias integer {size = 64; base = x;} := size_t;\n"
33 #else
34 "typealias integer {size = 32; base = x;} := size_t;\n"
35+#endif
36+#if defined(_TIME_BITS) && _TIME_BITS == 64
37+ "typealias integer {size = 64; base = x;} := time_t;\n"
38+#else
39+ "typealias integer {size = 32; base = x;} := time_t;\n"
40 #endif
41 "typealias floating_point {\n"
42 " exp_dig = 8;\n"
43diff --git a/lib/eal/include/rte_trace_point.h b/lib/eal/include/rte_trace_point.h
44index 41e2a7f..d05422c 100644
45--- a/lib/eal/include/rte_trace_point.h
46+++ b/lib/eal/include/rte_trace_point.h
47@@ -22,6 +22,7 @@ extern "C" {
48
49 #include <stdbool.h>
50 #include <stdio.h>
51+#include <time.h>
52
53 #include <rte_branch_prediction.h>
54 #include <rte_common.h>
55@@ -145,6 +146,8 @@ _tp _args \
56 #define rte_trace_point_emit_ptr(val)
57 /** Tracepoint function payload for string datatype */
58 #define rte_trace_point_emit_string(val)
59+/** Tracepoint function payload for time_t datatype */
60+#define rte_trace_point_emit_time_t(val)
61 /**
62 * Tracepoint function to capture a blob.
63 *
64@@ -429,6 +432,7 @@ do { \
65 #define rte_trace_point_emit_float(in) __rte_trace_point_emit(in, float)
66 #define rte_trace_point_emit_double(in) __rte_trace_point_emit(in, double)
67 #define rte_trace_point_emit_ptr(in) __rte_trace_point_emit(in, uintptr_t)
68+#define rte_trace_point_emit_time_t(in) __rte_trace_point_emit(in, time_t)
69
70 #endif /* __DOXYGEN__ */
71
72diff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h
73index 1b1ae0c..1d0dabb 100644
74--- a/lib/ethdev/ethdev_trace.h
75+++ b/lib/ethdev/ethdev_trace.h
76@@ -1129,7 +1129,7 @@ RTE_TRACE_POINT(
77 RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *time,
78 int ret),
79 rte_trace_point_emit_u16(port_id);
80- rte_trace_point_emit_size_t(time->tv_sec);
81+ rte_trace_point_emit_time_t(time->tv_sec);
82 rte_trace_point_emit_long(time->tv_nsec);
83 rte_trace_point_emit_int(ret);
84 )
85@@ -2146,7 +2146,7 @@ RTE_TRACE_POINT_FP(
86 RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *timestamp,
87 uint32_t flags, int ret),
88 rte_trace_point_emit_u16(port_id);
89- rte_trace_point_emit_size_t(timestamp->tv_sec);
90+ rte_trace_point_emit_time_t(timestamp->tv_sec);
91 rte_trace_point_emit_long(timestamp->tv_nsec);
92 rte_trace_point_emit_u32(flags);
93 rte_trace_point_emit_int(ret);
94@@ -2158,7 +2158,7 @@ RTE_TRACE_POINT_FP(
95 RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *timestamp,
96 int ret),
97 rte_trace_point_emit_u16(port_id);
98- rte_trace_point_emit_size_t(timestamp->tv_sec);
99+ rte_trace_point_emit_time_t(timestamp->tv_sec);
100 rte_trace_point_emit_long(timestamp->tv_nsec);
101 rte_trace_point_emit_int(ret);
102 )
103@@ -2169,7 +2169,7 @@ RTE_TRACE_POINT_FP(
104 RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *time,
105 int ret),
106 rte_trace_point_emit_u16(port_id);
107- rte_trace_point_emit_size_t(time->tv_sec);
108+ rte_trace_point_emit_time_t(time->tv_sec);
109 rte_trace_point_emit_long(time->tv_nsec);
110 rte_trace_point_emit_int(ret);
111 )
112--
1132.34.1
114
diff --git a/recipes-extended/dpdk/dpdk_23.11.1.bb b/recipes-extended/dpdk/dpdk_23.11.1.bb
index b505d55..c2d6a97 100644
--- a/recipes-extended/dpdk/dpdk_23.11.1.bb
+++ b/recipes-extended/dpdk/dpdk_23.11.1.bb
@@ -2,7 +2,8 @@ include dpdk.inc
2 2
3SRC_URI += " file://0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch \ 3SRC_URI += " file://0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch \
4 file://0001-net-ionic-fix-build-with-Fedora.patch \ 4 file://0001-net-ionic-fix-build-with-Fedora.patch \
5 file://0001-net-gve-base-fix-build-with-Fedora.patch" 5 file://0001-net-gve-base-fix-build-with-Fedora.patch \
6 file://0001-Add-new-tracepoint-function-for-type-time_t.patch"
6 7
7STABLE = "-stable" 8STABLE = "-stable"
8BRANCH = "23.11" 9BRANCH = "23.11"