45 odp_cpumask_zero(&mask->odp_cpumask);
50 odp_cpumask_set(&mask->odp_cpumask, core);
55 odp_cpumask_clr(&mask->odp_cpumask, core);
60 return odp_cpumask_isset(&mask->odp_cpumask, core);
65 odp_cpumask_t zero_mask;
67 odp_cpumask_zero(&zero_mask);
68 return odp_cpumask_equal(&zero_mask, &mask->odp_cpumask);
73 return odp_cpumask_equal(&mask1->odp_cpumask, &mask2->odp_cpumask);
78 for (
int i = 0; i < count; i++)
79 odp_cpumask_set(&mask->odp_cpumask, i);
84 odp_cpumask_copy(&dst->odp_cpumask, &src->odp_cpumask);
89 return odp_cpumask_count(&mask->odp_cpumask);
94 const int maxlen = (ODP_CPUMASK_SIZE + 63) / 64;
95 const int maxcpu = ODP_CPUMASK_SIZE - 1;
98 len = len > maxlen ? maxlen : len;
100 for (
int i = 0; i < len; i++) {
101 uint64_t mask64 = bits[i];
103 for (
int j = 0; mask64 && j < 64; j++) {
105 if (unlikely(cpu > maxcpu))
107 if (mask64 & ((uint64_t)1 << j)) {
108 odp_cpumask_set(&mask->odp_cpumask, cpu);
109 mask64 &= mask64 - 1;
119 int maxcpu = ODP_CPUMASK_SIZE - 1;
124 if (unlikely(len < 1))
127 if (maxcpu >= len * 64)
128 maxcpu = len * 64 - 1;
131 for (i = 0; i < len; i++)
135 cpu = odp_cpumask_first(&mask->odp_cpumask);
136 while (cpu >= 0 && cpu <= maxcpu) {
139 bits[i] |= (uint64_t)1 << j;
140 cpu = odp_cpumask_next(&mask->odp_cpumask, cpu);
148 odp_cpumask_t str_mask;
150 odp_cpumask_from_str(&str_mask, mask_str);
151 odp_cpumask_or(&mask->odp_cpumask, &mask->odp_cpumask, &str_mask);
158 int32_t ret = odp_cpumask_to_str(&mask->odp_cpumask, mask_str, len);
160 if (unlikely(ret <= 0 && len > 0))
166 if (unlikely((
unsigned int)(n - 1) >= EM_MAX_CORES))
170 int cpu = odp_cpumask_first(&mask->odp_cpumask);
172 while (cpu >= 0 && i < n) {
173 cpu = odp_cpumask_next(&mask->odp_cpumask, cpu);
184 odp_cpumask_and(&dst->odp_cpumask,
185 &src1->odp_cpumask, &src2->odp_cpumask);
191 odp_cpumask_or(&dst->odp_cpumask,
192 &src1->odp_cpumask, &src2->odp_cpumask);
198 odp_cpumask_xor(&dst->odp_cpumask,
199 &src1->odp_cpumask, &src2->odp_cpumask);