2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 09:58:01 +00:00
ovs/include/sparse/numa.h
Ilya Maximets d6501c6605 sparse: Fix numa.h for libnuma >= 2.0.13.
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:
  25dcde021d

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.")
Reviewed-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
2023-02-03 15:58:29 +01:00

39 lines
1.1 KiB
C

/*
* Copyright (c) 2019 Nicira, Inc.
*
* 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 __CHECKER__
#error "Use this header only with sparse. It is not a correct implementation."
#endif
#ifndef __NUMA_H_SPARSE
#define __NUMA_H_SPARSE 1
/* 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. */