Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

test_bits: add tests for GENMASK_U*()

Add some additional tests in lib/tests/test_bits.c to cover the
expected/non-expected values of the fixed-type GENMASK_U*() macros.

Also check that the result value matches the expected type. Since
those are known at build time, use static_assert() instead of normal
kunit tests.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Yury Norov <yury.norov@gmail.com>

authored by

Lucas De Marchi and committed by
Yury Norov
0405eef6 4fd225f7

+20
+20
lib/tests/test_bits.c
··· 5 5 6 6 #include <kunit/test.h> 7 7 #include <linux/bits.h> 8 + #include <linux/types.h> 9 + 10 + #define assert_type(t, x) _Generic(x, t: x, default: 0) 11 + 12 + static_assert(assert_type(unsigned long, GENMASK(31, 0)) == U32_MAX); 13 + static_assert(assert_type(unsigned long long, GENMASK_ULL(63, 0)) == U64_MAX); 14 + static_assert(assert_type(u8, GENMASK_U8(7, 0)) == U8_MAX); 15 + static_assert(assert_type(u16, GENMASK_U16(15, 0)) == U16_MAX); 16 + static_assert(assert_type(u32, GENMASK_U32(31, 0)) == U32_MAX); 17 + static_assert(assert_type(u64, GENMASK_U64(63, 0)) == U64_MAX); 8 18 9 19 10 20 static void genmask_test(struct kunit *test) ··· 24 14 KUNIT_EXPECT_EQ(test, 6ul, GENMASK(2, 1)); 25 15 KUNIT_EXPECT_EQ(test, 0xFFFFFFFFul, GENMASK(31, 0)); 26 16 17 + KUNIT_EXPECT_EQ(test, 1u, GENMASK_U8(0, 0)); 18 + KUNIT_EXPECT_EQ(test, 3u, GENMASK_U16(1, 0)); 19 + KUNIT_EXPECT_EQ(test, 0x10000, GENMASK_U32(16, 16)); 20 + 27 21 #ifdef TEST_GENMASK_FAILURES 28 22 /* these should fail compilation */ 29 23 GENMASK(0, 1); 30 24 GENMASK(0, 10); 31 25 GENMASK(9, 10); 26 + 27 + GENMASK_U32(0, 31); 28 + GENMASK_U64(64, 0); 29 + GENMASK_U32(32, 0); 30 + GENMASK_U16(16, 0); 31 + GENMASK_U8(8, 0); 32 32 #endif 33 33 34 34