Current numa.h header for sparse re-defines functions in a way
that breaks the header from libnuma 2.0.13+, because the original
issue was fixed in that version:
  
https://github.com/numactl/numactl/commit/25dcde021dd4f1a1dcac2ba0094f1cb441a2e4a5

Sparse errors as a result:

  lib/netdev-afxdp.c: note: in included file (through include/sparse/numa.h):
  /usr/include/numa.h:346:26: error: macro "numa_get_interleave_mask_compat"
                                     passed 1 arguments, but takes just 0
  /usr/include/numa.h:376:26: error: macro "numa_get_membind_compat"
                                     passed 1 arguments, but takes just 0
  /usr/include/numa.h:406:26: error: macro "numa_get_run_node_mask_compat"
                                     passed 1 arguments, but takes just 0
  /usr/include/numa.h:347:1: error: Expected ; at end of declaration
  /usr/include/numa.h:347:1: error: got {
  /usr/include/numa.h:351:9: error: 'tp' has implicit type

It's hard to adjust defines to work with both versions of a header.
Just defining all the functions we actually use in OVS instead and
not including the original header.

Fixes: e8568993e062 ("netdev-afxdp: NUMA-aware memory allocation for XSK 
related memory.")
Signed-off-by: Ilya Maximets <[email protected]>
---
 include/sparse/numa.h | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/include/sparse/numa.h b/include/sparse/numa.h
index 3691a0eaf..a185972e3 100644
--- a/include/sparse/numa.h
+++ b/include/sparse/numa.h
@@ -18,10 +18,21 @@
 #error "Use this header only with sparse.  It is not a correct implementation."
 #endif
 
-/* Avoid sparse warning: non-ANSI function declaration of function" */
-#define numa_get_membind_compat() numa_get_membind_compat(void)
-#define numa_get_interleave_mask_compat() numa_get_interleave_mask_compat(void)
-#define numa_get_run_node_mask_compat() numa_get_run_node_mask_compat(void)
+#ifndef __NUMA_H_SPARSE
+#define __NUMA_H_SPARSE 1
 
-/* Get actual <numa.h> definitions for us to annotate and build on. */
-#include_next<numa.h>
+/* Avoid sparse warning "non-ANSI function declaration of function" with
+ * libnuma < 2.0.13. */
+
+struct bitmask {
+    unsigned long size;
+    unsigned long *maskp;
+};
+
+int numa_available(void);
+struct bitmask *numa_allocate_nodemask(void);
+void numa_bitmask_free(struct bitmask *);
+void numa_set_localalloc(void);
+void numa_set_preferred(int node);
+
+#endif /* <numa.h> for sparse. */
-- 
2.38.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to