37#ifndef _ENV_BITMASK_H_
38#define _ENV_BITMASK_H_
40#pragma GCC visibility push(default)
47#include <event_machine/platform/env/env_macros.h>
57 odp_cpumask_t odp_cpumask;
67 odp_cpumask_zero(&mask->odp_cpumask);
76static inline void env_bitmask_set(
int bit,
env_bitmask_t *mask)
78 odp_cpumask_set(&mask->odp_cpumask, bit);
87static inline void env_bitmask_clr(
int bit,
env_bitmask_t *mask)
89 odp_cpumask_clr(&mask->odp_cpumask, bit);
100static inline int env_bitmask_isset(
int bit,
const env_bitmask_t *mask)
102 return odp_cpumask_isset(&mask->odp_cpumask, bit);
112static inline int env_bitmask_iszero(
const env_bitmask_t *mask)
114 odp_cpumask_t zero_mask;
116 odp_cpumask_zero(&zero_mask);
118 return odp_cpumask_equal(&zero_mask, &mask->odp_cpumask);
129static inline int env_bitmask_equal(
const env_bitmask_t *mask1,
132 return odp_cpumask_equal(&mask1->odp_cpumask, &mask2->odp_cpumask);
141static inline void env_bitmask_set_count(
int count,
env_bitmask_t *mask)
143 for (
int i = 0; i < count; i++)
144 odp_cpumask_set(&mask->odp_cpumask, i);
156 odp_cpumask_copy(&dst->odp_cpumask, &src->odp_cpumask);
166static inline int env_bitmask_count(
const env_bitmask_t *mask)
168 return odp_cpumask_count(&mask->odp_cpumask);
188static inline void env_bitmask_set_bits(
const uint64_t bits[],
int len,
195 fprintf(stderr,
"%s() function not implemented!\n", __func__);
215static inline int env_bitmask_get_bits(uint64_t bits[],
int len,
222 fprintf(stderr,
"%s() function not implemented!\n", __func__);
235static inline int env_bitmask_idx(
int n,
const env_bitmask_t *mask)
237 if (unlikely((
unsigned int)(n - 1) >= ODP_CPUMASK_SIZE))
241 int cpu = odp_cpumask_first(&mask->odp_cpumask);
243 while (cpu >= 0 && i < n) {
244 cpu = odp_cpumask_next(&mask->odp_cpumask, cpu);
264 odp_cpumask_and(&dst->odp_cpumask,
265 &src1->odp_cpumask, &src2->odp_cpumask);
281 odp_cpumask_or(&dst->odp_cpumask,
282 &src1->odp_cpumask, &src2->odp_cpumask);
298 odp_cpumask_xor(&dst->odp_cpumask,
299 &src1->odp_cpumask, &src2->odp_cpumask);
306#pragma GCC visibility pop