|
33 | 33 | KUNIT_EXPECT_EQ_MSG((test), nr_cpu_ids - mask_weight, iter, MASK_MSG(mask)); \
|
34 | 34 | } while (0)
|
35 | 35 |
|
| 36 | +#define EXPECT_FOR_EACH_CPU_OP_EQ(test, op, mask1, mask2) \ |
| 37 | + do { \ |
| 38 | + const cpumask_t *m1 = (mask1); \ |
| 39 | + const cpumask_t *m2 = (mask2); \ |
| 40 | + int weight; \ |
| 41 | + int cpu, iter = 0; \ |
| 42 | + cpumask_##op(&mask_tmp, m1, m2); \ |
| 43 | + weight = cpumask_weight(&mask_tmp); \ |
| 44 | + for_each_cpu_##op(cpu, mask1, mask2) \ |
| 45 | + iter++; \ |
| 46 | + KUNIT_EXPECT_EQ((test), weight, iter); \ |
| 47 | + } while (0) |
| 48 | + |
36 | 49 | #define EXPECT_FOR_EACH_CPU_WRAP_EQ(test, mask) \
|
37 | 50 | do { \
|
38 | 51 | const cpumask_t *m = (mask); \
|
|
54 | 67 |
|
55 | 68 | static cpumask_t mask_empty;
|
56 | 69 | static cpumask_t mask_all;
|
| 70 | +static cpumask_t mask_tmp; |
57 | 71 |
|
58 | 72 | static void test_cpumask_weight(struct kunit *test)
|
59 | 73 | {
|
@@ -101,10 +115,15 @@ static void test_cpumask_iterators(struct kunit *test)
|
101 | 115 | EXPECT_FOR_EACH_CPU_EQ(test, &mask_empty);
|
102 | 116 | EXPECT_FOR_EACH_CPU_NOT_EQ(test, &mask_empty);
|
103 | 117 | EXPECT_FOR_EACH_CPU_WRAP_EQ(test, &mask_empty);
|
| 118 | + EXPECT_FOR_EACH_CPU_OP_EQ(test, and, &mask_empty, &mask_empty); |
| 119 | + EXPECT_FOR_EACH_CPU_OP_EQ(test, and, cpu_possible_mask, &mask_empty); |
| 120 | + EXPECT_FOR_EACH_CPU_OP_EQ(test, andnot, &mask_empty, &mask_empty); |
104 | 121 |
|
105 | 122 | EXPECT_FOR_EACH_CPU_EQ(test, cpu_possible_mask);
|
106 | 123 | EXPECT_FOR_EACH_CPU_NOT_EQ(test, cpu_possible_mask);
|
107 | 124 | EXPECT_FOR_EACH_CPU_WRAP_EQ(test, cpu_possible_mask);
|
| 125 | + EXPECT_FOR_EACH_CPU_OP_EQ(test, and, cpu_possible_mask, cpu_possible_mask); |
| 126 | + EXPECT_FOR_EACH_CPU_OP_EQ(test, andnot, cpu_possible_mask, &mask_empty); |
108 | 127 | }
|
109 | 128 |
|
110 | 129 | static void test_cpumask_iterators_builtin(struct kunit *test)
|
|
0 commit comments