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); |
