53 odp_cpumask_zero(&mask->odp_cpumask);
58 odp_cpumask_set(&mask->odp_cpumask, core);
63 odp_cpumask_clr(&mask->odp_cpumask, core);
68 return odp_cpumask_isset(&mask->odp_cpumask, core);
73 odp_cpumask_t zero_mask;
75 odp_cpumask_zero(&zero_mask);
76 return odp_cpumask_equal(&zero_mask, &mask->odp_cpumask);
81 return odp_cpumask_equal(&mask1->odp_cpumask, &mask2->odp_cpumask);
86 for (
int i = 0; i < count; i++)
87 odp_cpumask_set(&mask->odp_cpumask, i);
92 odp_cpumask_copy(&dst->odp_cpumask, &src->odp_cpumask);
97 return odp_cpumask_count(&mask->odp_cpumask);
102 const int maxlen = (ODP_CPUMASK_SIZE + 63) / 64;
103 const int maxcpu = ODP_CPUMASK_SIZE - 1;
106 len = len > maxlen ? maxlen : len;
108 for (
int i = 0; i < len; i++) {
109 uint64_t mask64 = bits[i];
111 for (
int j = 0; mask64 && j < 64; j++) {
113 if (unlikely(cpu > maxcpu))
115 if (mask64 & ((uint64_t)1 << j)) {
116 odp_cpumask_set(&mask->odp_cpumask, cpu);
117 mask64 &= mask64 - 1;
127 int maxcpu = ODP_CPUMASK_SIZE - 1;
132 if (unlikely(len < 1))
135 if (maxcpu >= len * 64)
136 maxcpu = len * 64 - 1;
139 for (i = 0; i < len; i++)
143 cpu = odp_cpumask_first(&mask->odp_cpumask);
144 while (cpu >= 0 && cpu <= maxcpu) {
147 bits[i] |= (uint64_t)1 << j;
148 cpu = odp_cpumask_next(&mask->odp_cpumask, cpu);
156 odp_cpumask_t str_mask;
158 odp_cpumask_from_str(&str_mask, mask_str);
159 odp_cpumask_or(&mask->odp_cpumask, &mask->odp_cpumask, &str_mask);
166 int32_t ret = odp_cpumask_to_str(&mask->odp_cpumask, mask_str, len);
168 if (unlikely(ret <= 0 && len > 0))
178 int cpu = odp_cpumask_first(&mask->odp_cpumask);
180 while (cpu >= 0 && i < n) {
181 cpu = odp_cpumask_next(&mask->odp_cpumask, cpu);
191 return odp_cpumask_first(&mask->odp_cpumask);
196 return odp_cpumask_last(&mask->odp_cpumask);
201 return odp_cpumask_next(&mask->odp_cpumask, idx);
207 odp_cpumask_and(&dst->odp_cpumask,
208 &src1->odp_cpumask, &src2->odp_cpumask);
214 odp_cpumask_or(&dst->odp_cpumask,
215 &src1->odp_cpumask, &src2->odp_cpumask);
221 odp_cpumask_xor(&dst->odp_cpumask,
222 &src1->odp_cpumask, &src2->odp_cpumask);
void em_core_mask_or(em_core_mask_t *dst, const em_core_mask_t *src1, const em_core_mask_t *src2)
int em_core_mask_equal(const em_core_mask_t *mask1, const em_core_mask_t *mask2)
int em_core_mask_count(const em_core_mask_t *mask)
void em_core_mask_tostr(char *mask_str, int len, const em_core_mask_t *mask)
int em_core_mask_first(const em_core_mask_t *mask)
int em_core_mask_iszero(const em_core_mask_t *mask)
void em_core_mask_copy(em_core_mask_t *dst, const em_core_mask_t *src)
int em_core_mask_set_str(const char *mask_str, em_core_mask_t *mask)
void em_core_mask_set(int core, em_core_mask_t *mask)
void em_core_mask_clr(int core, em_core_mask_t *mask)
int em_core_mask_idx(int n, const em_core_mask_t *mask)
int em_core_mask_bits(uint64_t bits[], int len, const em_core_mask_t *mask)
int em_core_mask_isset(int core, const em_core_mask_t *mask)
void em_core_mask_set_count(int count, em_core_mask_t *mask)
int em_core_mask_last(const em_core_mask_t *mask)
void em_core_mask_and(em_core_mask_t *dst, const em_core_mask_t *src1, const em_core_mask_t *src2)
void em_core_mask_set_bits(const uint64_t bits[], int len, em_core_mask_t *mask)
int em_core_mask_next(const em_core_mask_t *mask, int idx)
void em_core_mask_zero(em_core_mask_t *mask)
void em_core_mask_xor(em_core_mask_t *dst, const em_core_mask_t *src1, const em_core_mask_t *src2)