diff options
Diffstat (limited to 'lib/test_xarray.c')
-rw-r--r-- | lib/test_xarray.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/test_xarray.c b/lib/test_xarray.c index b711030fbc32..fb472258b639 100644 --- a/lib/test_xarray.c +++ b/lib/test_xarray.c | |||
@@ -198,6 +198,25 @@ static noinline void check_xa_shrink(struct xarray *xa) | |||
198 | XA_BUG_ON(xa, !xa_empty(xa)); | 198 | XA_BUG_ON(xa, !xa_empty(xa)); |
199 | } | 199 | } |
200 | 200 | ||
201 | static noinline void check_cmpxchg(struct xarray *xa) | ||
202 | { | ||
203 | void *FIVE = xa_mk_value(5); | ||
204 | void *SIX = xa_mk_value(6); | ||
205 | void *LOTS = xa_mk_value(12345678); | ||
206 | |||
207 | XA_BUG_ON(xa, !xa_empty(xa)); | ||
208 | XA_BUG_ON(xa, xa_store_index(xa, 12345678, GFP_KERNEL) != NULL); | ||
209 | XA_BUG_ON(xa, xa_insert(xa, 12345678, xa, GFP_KERNEL) != -EEXIST); | ||
210 | XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, SIX, FIVE, GFP_KERNEL) != LOTS); | ||
211 | XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, LOTS, FIVE, GFP_KERNEL) != LOTS); | ||
212 | XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, FIVE, LOTS, GFP_KERNEL) != FIVE); | ||
213 | XA_BUG_ON(xa, xa_cmpxchg(xa, 5, FIVE, NULL, GFP_KERNEL) != NULL); | ||
214 | XA_BUG_ON(xa, xa_cmpxchg(xa, 5, NULL, FIVE, GFP_KERNEL) != NULL); | ||
215 | xa_erase_index(xa, 12345678); | ||
216 | xa_erase_index(xa, 5); | ||
217 | XA_BUG_ON(xa, !xa_empty(xa)); | ||
218 | } | ||
219 | |||
201 | static noinline void check_multi_store(struct xarray *xa) | 220 | static noinline void check_multi_store(struct xarray *xa) |
202 | { | 221 | { |
203 | #ifdef CONFIG_XARRAY_MULTI | 222 | #ifdef CONFIG_XARRAY_MULTI |
@@ -274,6 +293,7 @@ static int xarray_checks(void) | |||
274 | check_xa_load(&array); | 293 | check_xa_load(&array); |
275 | check_xa_mark(&array); | 294 | check_xa_mark(&array); |
276 | check_xa_shrink(&array); | 295 | check_xa_shrink(&array); |
296 | check_cmpxchg(&array); | ||
277 | check_multi_store(&array); | 297 | check_multi_store(&array); |
278 | 298 | ||
279 | printk("XArray: %u of %u tests passed\n", tests_passed, tests_run); | 299 | printk("XArray: %u of %u tests passed\n", tests_passed, tests_run); |