From: Bruce Richardson <bruce.richardson@intel.com>
To: dev@dpdk.org
Cc: David Marchand <david.marchand@redhat.com>,
stable@dpdk.org, Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH] eal/freebsd: fix use of newer CPU_* macros
Date: Fri, 20 May 2022 19:10:50 +0100 [thread overview]
Message-ID: <20220520181050.55654-1-bruce.richardson@intel.com> (raw)
From: David Marchand <david.marchand@redhat.com>
FreeBSD has updated its CPU macros to align more with the definitions
used on Linux[1]. Unfortunately, while this makes compatibility better
in future, it means we need to have both legacy and newer definition
support. Use a meson check to determine which set of macros are used.
[1] https://cgit.freebsd.org/src/commit/?id=e2650af157bc7489deaf2c9054995f0f88a6e5da
Fixes: c3568ea37670 ("eal: restrict control threads to startup CPU affinity")
Fixes: b6be16acfeb1 ("eal: fix control thread affinity with --lcores")
Bugzilla ID: 1014
CC: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
The fixes lines are indicative only (as commits where the macros were
introduced), since there is no real bug in DPDK, just a changed environment it
has to build/run in.
---
lib/eal/freebsd/include/rte_os.h | 17 ++++++++++++++++-
lib/eal/freebsd/meson.build | 11 +++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/lib/eal/freebsd/include/rte_os.h b/lib/eal/freebsd/include/rte_os.h
index b4afd45adc..003a8025b0 100644
--- a/lib/eal/freebsd/include/rte_os.h
+++ b/lib/eal/freebsd/include/rte_os.h
@@ -28,6 +28,8 @@ extern "C" {
typedef cpuset_t rte_cpuset_t;
#define RTE_HAS_CPUSET
+
+#ifdef RTE_EAL_FREEBSD_CPUSET_LEGACY
#define RTE_CPU_AND(dst, src1, src2) do \
{ \
cpuset_t tmp; \
@@ -61,7 +63,20 @@ typedef cpuset_t rte_cpuset_t;
CPU_ANDNOT(&tmp, src); \
CPU_COPY(&tmp, dst); \
} while (0)
-#endif
+#endif /* CPU_NAND */
+
+#else /* RTE_EAL_FREEBSD_CPUSET_LEGACY */
+
+#define RTE_CPU_AND CPU_AND
+#define RTE_CPU_OR CPU_OR
+#define RTE_CPU_FILL CPU_FILL
+#define RTE_CPU_NOT(dst,src) do { \
+ cpu_set_t tmp; \
+ CPU_FILL(&tmp); \
+ CPU_XOR(dst, src, &tmp); \
+} while(0)
+
+#endif /* RTE_EAL_FREEBSD_CPUSET_LEGACY */
#ifdef __cplusplus
}
diff --git a/lib/eal/freebsd/meson.build b/lib/eal/freebsd/meson.build
index 398ceab71d..2107d282db 100644
--- a/lib/eal/freebsd/meson.build
+++ b/lib/eal/freebsd/meson.build
@@ -19,3 +19,14 @@ sources += files(
)
deps += ['kvargs', 'telemetry']
+
+# test for version of cpuset macros
+cpuset_test_code = '''
+ #include <sys/types.h>
+ #include <sys/cpuset.h>
+ void cpu_test_or(cpuset_t *s) { CPU_OR(s, s, s); }
+'''
+
+if not cc.compiles(cpuset_test_code, name: 'Detect argument count for CPU_OR')
+ dpdk_conf.set('RTE_EAL_FREEBSD_CPUSET_LEGACY', 1)
+endif
--
2.36.1
next reply other threads:[~2022-05-20 18:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-20 18:10 Bruce Richardson [this message]
2022-05-24 6:50 ` [PATCH] eal/freebsd: fix use of newer CPU_* macros Gao, DaxueX
2022-05-24 10:37 ` David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220520181050.55654-1-bruce.richardson@intel.com \
--to=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.