37 #ifndef _ENV_BITMASK_H_
38 #define _ENV_BITMASK_H_
40 #pragma GCC visibility push(default)
52 odp_cpumask_t odp_cpumask;
62 odp_cpumask_zero(&mask->odp_cpumask);
71 static inline void env_bitmask_set(
int bit,
env_bitmask_t *mask)
73 odp_cpumask_set(&mask->odp_cpumask, bit);
82 static inline void env_bitmask_clr(
int bit,
env_bitmask_t *mask)
84 odp_cpumask_clr(&mask->odp_cpumask, bit);
95 static inline int env_bitmask_isset(
int bit,
const env_bitmask_t *mask)
97 return odp_cpumask_isset(&mask->odp_cpumask, bit);
107 static inline int env_bitmask_iszero(
const env_bitmask_t *mask)
109 odp_cpumask_t zero_mask;
111 odp_cpumask_zero(&zero_mask);
113 return odp_cpumask_equal(&zero_mask, &mask->odp_cpumask);
124 static inline int env_bitmask_equal(
const env_bitmask_t *mask1,
127 return odp_cpumask_equal(&mask1->odp_cpumask, &mask2->odp_cpumask);
136 static inline void env_bitmask_set_count(
int count,
env_bitmask_t *mask)
138 for (
int i = 0; i < count; i++)
139 odp_cpumask_set(&mask->odp_cpumask, i);
151 odp_cpumask_copy(&dst->odp_cpumask, &src->odp_cpumask);
161 static inline int env_bitmask_count(
const env_bitmask_t *mask)
163 return odp_cpumask_count(&mask->odp_cpumask);
183 static inline void env_bitmask_set_bits(
const uint64_t bits[],
int len,
190 fprintf(stderr,
"%s() function not implemented!\n", __func__);
210 static inline int env_bitmask_get_bits(uint64_t bits[],
int len,
217 fprintf(stderr,
"%s() function not implemented!\n", __func__);
230 static inline int env_bitmask_idx(
int n,
const env_bitmask_t *mask)
232 if (unlikely((
unsigned int)(n - 1) >= ODP_CPUMASK_SIZE))
236 int cpu = odp_cpumask_first(&mask->odp_cpumask);
238 while (cpu >= 0 && i < n) {
239 cpu = odp_cpumask_next(&mask->odp_cpumask, cpu);
259 odp_cpumask_and(&dst->odp_cpumask,
260 &src1->odp_cpumask, &src2->odp_cpumask);
276 odp_cpumask_or(&dst->odp_cpumask,
277 &src1->odp_cpumask, &src2->odp_cpumask);
293 odp_cpumask_xor(&dst->odp_cpumask,
294 &src1->odp_cpumask, &src2->odp_cpumask);
301 #pragma GCC visibility pop