Message ID | 20230117170827.3000242-1-i.maximets@ovn.org |
---|---|
State | Accepted |
Commit | d6501c66050ad7ad54081f2104a01a28f1b3ce42 |
Headers | show |
Series | [ovs-dev] sparse: Fix numa.h for libnuma >= 2.0.13. | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/intel-ovs-compilation | success | test: success |
On Tue, Jan 17, 2023 at 6:13 PM Ilya Maximets <i.maximets@ovn.org> wrote: > > 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 <i.maximets@ovn.org> Reviewed-by: David Marchand <david.marchand@redhat.com>
On 2/2/23 09:31, David Marchand wrote: > On Tue, Jan 17, 2023 at 6:13 PM Ilya Maximets <i.maximets@ovn.org> wrote: >> >> 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 <i.maximets@ovn.org> > > Reviewed-by: David Marchand <david.marchand@redhat.com> Thanks! Applied and backported down to 2.17. Best regards, Ilya Maximets.
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. */
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 <i.maximets@ovn.org> --- include/sparse/numa.h | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)