xref: /kernel/linux/linux-6.6/lib/test-kstrtox.c (revision 62306a36)
162306a36Sopenharmony_ci#include <linux/init.h>
262306a36Sopenharmony_ci#include <linux/kernel.h>
362306a36Sopenharmony_ci#include <linux/module.h>
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#define for_each_test(i, test)	\
662306a36Sopenharmony_ci	for (i = 0; i < ARRAY_SIZE(test); i++)
762306a36Sopenharmony_ci
862306a36Sopenharmony_cistruct test_fail {
962306a36Sopenharmony_ci	const char *str;
1062306a36Sopenharmony_ci	unsigned int base;
1162306a36Sopenharmony_ci};
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define DEFINE_TEST_FAIL(test)	\
1462306a36Sopenharmony_ci	const struct test_fail test[] __initconst
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define DECLARE_TEST_OK(type, test_type)	\
1762306a36Sopenharmony_ci	test_type {				\
1862306a36Sopenharmony_ci		const char *str;		\
1962306a36Sopenharmony_ci		unsigned int base;		\
2062306a36Sopenharmony_ci		type expected_res;		\
2162306a36Sopenharmony_ci	}
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci#define DEFINE_TEST_OK(type, test)	\
2462306a36Sopenharmony_ci	const type test[] __initconst
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci#define TEST_FAIL(fn, type, fmt, test)					\
2762306a36Sopenharmony_ci{									\
2862306a36Sopenharmony_ci	unsigned int i;							\
2962306a36Sopenharmony_ci									\
3062306a36Sopenharmony_ci	for_each_test(i, test) {					\
3162306a36Sopenharmony_ci		const struct test_fail *t = &test[i];			\
3262306a36Sopenharmony_ci		type tmp;						\
3362306a36Sopenharmony_ci		int rv;							\
3462306a36Sopenharmony_ci									\
3562306a36Sopenharmony_ci		tmp = 0;						\
3662306a36Sopenharmony_ci		rv = fn(t->str, t->base, &tmp);				\
3762306a36Sopenharmony_ci		if (rv >= 0) {						\
3862306a36Sopenharmony_ci			WARN(1, "str '%s', base %u, expected -E, got %d/" fmt "\n",	\
3962306a36Sopenharmony_ci				t->str, t->base, rv, tmp);		\
4062306a36Sopenharmony_ci			continue;					\
4162306a36Sopenharmony_ci		}							\
4262306a36Sopenharmony_ci	}								\
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#define TEST_OK(fn, type, fmt, test)					\
4662306a36Sopenharmony_ci{									\
4762306a36Sopenharmony_ci	unsigned int i;							\
4862306a36Sopenharmony_ci									\
4962306a36Sopenharmony_ci	for_each_test(i, test) {					\
5062306a36Sopenharmony_ci		const typeof(test[0]) *t = &test[i];			\
5162306a36Sopenharmony_ci		type res;						\
5262306a36Sopenharmony_ci		int rv;							\
5362306a36Sopenharmony_ci									\
5462306a36Sopenharmony_ci		rv = fn(t->str, t->base, &res);				\
5562306a36Sopenharmony_ci		if (rv != 0) {						\
5662306a36Sopenharmony_ci			WARN(1, "str '%s', base %u, expected 0/" fmt ", got %d\n",	\
5762306a36Sopenharmony_ci				t->str, t->base, t->expected_res, rv);	\
5862306a36Sopenharmony_ci			continue;					\
5962306a36Sopenharmony_ci		}							\
6062306a36Sopenharmony_ci		if (res != t->expected_res) {				\
6162306a36Sopenharmony_ci			WARN(1, "str '%s', base %u, expected " fmt ", got " fmt "\n",	\
6262306a36Sopenharmony_ci				t->str, t->base, t->expected_res, res);	\
6362306a36Sopenharmony_ci			continue;					\
6462306a36Sopenharmony_ci		}							\
6562306a36Sopenharmony_ci	}								\
6662306a36Sopenharmony_ci}
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cistatic void __init test_kstrtoull_ok(void)
6962306a36Sopenharmony_ci{
7062306a36Sopenharmony_ci	DECLARE_TEST_OK(unsigned long long, struct test_ull);
7162306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_ull, test_ull_ok) = {
7262306a36Sopenharmony_ci		{"0",	10,	0ULL},
7362306a36Sopenharmony_ci		{"1",	10,	1ULL},
7462306a36Sopenharmony_ci		{"127",	10,	127ULL},
7562306a36Sopenharmony_ci		{"128",	10,	128ULL},
7662306a36Sopenharmony_ci		{"129",	10,	129ULL},
7762306a36Sopenharmony_ci		{"255",	10,	255ULL},
7862306a36Sopenharmony_ci		{"256",	10,	256ULL},
7962306a36Sopenharmony_ci		{"257",	10,	257ULL},
8062306a36Sopenharmony_ci		{"32767",	10,	32767ULL},
8162306a36Sopenharmony_ci		{"32768",	10,	32768ULL},
8262306a36Sopenharmony_ci		{"32769",	10,	32769ULL},
8362306a36Sopenharmony_ci		{"65535",	10,	65535ULL},
8462306a36Sopenharmony_ci		{"65536",	10,	65536ULL},
8562306a36Sopenharmony_ci		{"65537",	10,	65537ULL},
8662306a36Sopenharmony_ci		{"2147483647",	10,	2147483647ULL},
8762306a36Sopenharmony_ci		{"2147483648",	10,	2147483648ULL},
8862306a36Sopenharmony_ci		{"2147483649",	10,	2147483649ULL},
8962306a36Sopenharmony_ci		{"4294967295",	10,	4294967295ULL},
9062306a36Sopenharmony_ci		{"4294967296",	10,	4294967296ULL},
9162306a36Sopenharmony_ci		{"4294967297",	10,	4294967297ULL},
9262306a36Sopenharmony_ci		{"9223372036854775807",	10,	9223372036854775807ULL},
9362306a36Sopenharmony_ci		{"9223372036854775808",	10,	9223372036854775808ULL},
9462306a36Sopenharmony_ci		{"9223372036854775809",	10,	9223372036854775809ULL},
9562306a36Sopenharmony_ci		{"18446744073709551614",	10,	18446744073709551614ULL},
9662306a36Sopenharmony_ci		{"18446744073709551615",	10,	18446744073709551615ULL},
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci		{"00",		8,	00ULL},
9962306a36Sopenharmony_ci		{"01",		8,	01ULL},
10062306a36Sopenharmony_ci		{"0177",	8,	0177ULL},
10162306a36Sopenharmony_ci		{"0200",	8,	0200ULL},
10262306a36Sopenharmony_ci		{"0201",	8,	0201ULL},
10362306a36Sopenharmony_ci		{"0377",	8,	0377ULL},
10462306a36Sopenharmony_ci		{"0400",	8,	0400ULL},
10562306a36Sopenharmony_ci		{"0401",	8,	0401ULL},
10662306a36Sopenharmony_ci		{"077777",	8,	077777ULL},
10762306a36Sopenharmony_ci		{"0100000",	8,	0100000ULL},
10862306a36Sopenharmony_ci		{"0100001",	8,	0100001ULL},
10962306a36Sopenharmony_ci		{"0177777",	8,	0177777ULL},
11062306a36Sopenharmony_ci		{"0200000",	8,	0200000ULL},
11162306a36Sopenharmony_ci		{"0200001",	8,	0200001ULL},
11262306a36Sopenharmony_ci		{"017777777777",	8,	017777777777ULL},
11362306a36Sopenharmony_ci		{"020000000000",	8,	020000000000ULL},
11462306a36Sopenharmony_ci		{"020000000001",	8,	020000000001ULL},
11562306a36Sopenharmony_ci		{"037777777777",	8,	037777777777ULL},
11662306a36Sopenharmony_ci		{"040000000000",	8,	040000000000ULL},
11762306a36Sopenharmony_ci		{"040000000001",	8,	040000000001ULL},
11862306a36Sopenharmony_ci		{"0777777777777777777777",	8,	0777777777777777777777ULL},
11962306a36Sopenharmony_ci		{"01000000000000000000000",	8,	01000000000000000000000ULL},
12062306a36Sopenharmony_ci		{"01000000000000000000001",	8,	01000000000000000000001ULL},
12162306a36Sopenharmony_ci		{"01777777777777777777776",	8,	01777777777777777777776ULL},
12262306a36Sopenharmony_ci		{"01777777777777777777777",	8,	01777777777777777777777ULL},
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci		{"0x0",		16,	0x0ULL},
12562306a36Sopenharmony_ci		{"0x1",		16,	0x1ULL},
12662306a36Sopenharmony_ci		{"0x7f",	16,	0x7fULL},
12762306a36Sopenharmony_ci		{"0x80",	16,	0x80ULL},
12862306a36Sopenharmony_ci		{"0x81",	16,	0x81ULL},
12962306a36Sopenharmony_ci		{"0xff",	16,	0xffULL},
13062306a36Sopenharmony_ci		{"0x100",	16,	0x100ULL},
13162306a36Sopenharmony_ci		{"0x101",	16,	0x101ULL},
13262306a36Sopenharmony_ci		{"0x7fff",	16,	0x7fffULL},
13362306a36Sopenharmony_ci		{"0x8000",	16,	0x8000ULL},
13462306a36Sopenharmony_ci		{"0x8001",	16,	0x8001ULL},
13562306a36Sopenharmony_ci		{"0xffff",	16,	0xffffULL},
13662306a36Sopenharmony_ci		{"0x10000",	16,	0x10000ULL},
13762306a36Sopenharmony_ci		{"0x10001",	16,	0x10001ULL},
13862306a36Sopenharmony_ci		{"0x7fffffff",	16,	0x7fffffffULL},
13962306a36Sopenharmony_ci		{"0x80000000",	16,	0x80000000ULL},
14062306a36Sopenharmony_ci		{"0x80000001",	16,	0x80000001ULL},
14162306a36Sopenharmony_ci		{"0xffffffff",	16,	0xffffffffULL},
14262306a36Sopenharmony_ci		{"0x100000000",	16,	0x100000000ULL},
14362306a36Sopenharmony_ci		{"0x100000001",	16,	0x100000001ULL},
14462306a36Sopenharmony_ci		{"0x7fffffffffffffff",	16,	0x7fffffffffffffffULL},
14562306a36Sopenharmony_ci		{"0x8000000000000000",	16,	0x8000000000000000ULL},
14662306a36Sopenharmony_ci		{"0x8000000000000001",	16,	0x8000000000000001ULL},
14762306a36Sopenharmony_ci		{"0xfffffffffffffffe",	16,	0xfffffffffffffffeULL},
14862306a36Sopenharmony_ci		{"0xffffffffffffffff",	16,	0xffffffffffffffffULL},
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci		{"0\n",	0,	0ULL},
15162306a36Sopenharmony_ci	};
15262306a36Sopenharmony_ci	TEST_OK(kstrtoull, unsigned long long, "%llu", test_ull_ok);
15362306a36Sopenharmony_ci}
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_cistatic void __init test_kstrtoull_fail(void)
15662306a36Sopenharmony_ci{
15762306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_ull_fail) = {
15862306a36Sopenharmony_ci		{"",	0},
15962306a36Sopenharmony_ci		{"",	8},
16062306a36Sopenharmony_ci		{"",	10},
16162306a36Sopenharmony_ci		{"",	16},
16262306a36Sopenharmony_ci		{"\n",	0},
16362306a36Sopenharmony_ci		{"\n",	8},
16462306a36Sopenharmony_ci		{"\n",	10},
16562306a36Sopenharmony_ci		{"\n",	16},
16662306a36Sopenharmony_ci		{"\n0",	0},
16762306a36Sopenharmony_ci		{"\n0",	8},
16862306a36Sopenharmony_ci		{"\n0",	10},
16962306a36Sopenharmony_ci		{"\n0",	16},
17062306a36Sopenharmony_ci		{"+",	0},
17162306a36Sopenharmony_ci		{"+",	8},
17262306a36Sopenharmony_ci		{"+",	10},
17362306a36Sopenharmony_ci		{"+",	16},
17462306a36Sopenharmony_ci		{"-",	0},
17562306a36Sopenharmony_ci		{"-",	8},
17662306a36Sopenharmony_ci		{"-",	10},
17762306a36Sopenharmony_ci		{"-",	16},
17862306a36Sopenharmony_ci		{"0x",	0},
17962306a36Sopenharmony_ci		{"0x",	16},
18062306a36Sopenharmony_ci		{"0X",	0},
18162306a36Sopenharmony_ci		{"0X",	16},
18262306a36Sopenharmony_ci		{"0 ",	0},
18362306a36Sopenharmony_ci		{"1+",	0},
18462306a36Sopenharmony_ci		{"1-",	0},
18562306a36Sopenharmony_ci		{" 2",	0},
18662306a36Sopenharmony_ci		/* base autodetection */
18762306a36Sopenharmony_ci		{"0x0z",	0},
18862306a36Sopenharmony_ci		{"0z",		0},
18962306a36Sopenharmony_ci		{"a",		0},
19062306a36Sopenharmony_ci		/* digit >= base */
19162306a36Sopenharmony_ci		{"2",	2},
19262306a36Sopenharmony_ci		{"8",	8},
19362306a36Sopenharmony_ci		{"a",	10},
19462306a36Sopenharmony_ci		{"A",	10},
19562306a36Sopenharmony_ci		{"g",	16},
19662306a36Sopenharmony_ci		{"G",	16},
19762306a36Sopenharmony_ci		/* overflow */
19862306a36Sopenharmony_ci		{"10000000000000000000000000000000000000000000000000000000000000000",	2},
19962306a36Sopenharmony_ci		{"2000000000000000000000",	8},
20062306a36Sopenharmony_ci		{"18446744073709551616",	10},
20162306a36Sopenharmony_ci		{"10000000000000000",	16},
20262306a36Sopenharmony_ci		/* negative */
20362306a36Sopenharmony_ci		{"-0", 0},
20462306a36Sopenharmony_ci		{"-0", 8},
20562306a36Sopenharmony_ci		{"-0", 10},
20662306a36Sopenharmony_ci		{"-0", 16},
20762306a36Sopenharmony_ci		{"-1", 0},
20862306a36Sopenharmony_ci		{"-1", 8},
20962306a36Sopenharmony_ci		{"-1", 10},
21062306a36Sopenharmony_ci		{"-1", 16},
21162306a36Sopenharmony_ci		/* sign is first character if any */
21262306a36Sopenharmony_ci		{"-+1", 0},
21362306a36Sopenharmony_ci		{"-+1", 8},
21462306a36Sopenharmony_ci		{"-+1", 10},
21562306a36Sopenharmony_ci		{"-+1", 16},
21662306a36Sopenharmony_ci		/* nothing after \n */
21762306a36Sopenharmony_ci		{"0\n0", 0},
21862306a36Sopenharmony_ci		{"0\n0", 8},
21962306a36Sopenharmony_ci		{"0\n0", 10},
22062306a36Sopenharmony_ci		{"0\n0", 16},
22162306a36Sopenharmony_ci		{"0\n+", 0},
22262306a36Sopenharmony_ci		{"0\n+", 8},
22362306a36Sopenharmony_ci		{"0\n+", 10},
22462306a36Sopenharmony_ci		{"0\n+", 16},
22562306a36Sopenharmony_ci		{"0\n-", 0},
22662306a36Sopenharmony_ci		{"0\n-", 8},
22762306a36Sopenharmony_ci		{"0\n-", 10},
22862306a36Sopenharmony_ci		{"0\n-", 16},
22962306a36Sopenharmony_ci		{"0\n ", 0},
23062306a36Sopenharmony_ci		{"0\n ", 8},
23162306a36Sopenharmony_ci		{"0\n ", 10},
23262306a36Sopenharmony_ci		{"0\n ", 16},
23362306a36Sopenharmony_ci	};
23462306a36Sopenharmony_ci	TEST_FAIL(kstrtoull, unsigned long long, "%llu", test_ull_fail);
23562306a36Sopenharmony_ci}
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_cistatic void __init test_kstrtoll_ok(void)
23862306a36Sopenharmony_ci{
23962306a36Sopenharmony_ci	DECLARE_TEST_OK(long long, struct test_ll);
24062306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_ll, test_ll_ok) = {
24162306a36Sopenharmony_ci		{"0",	10,	0LL},
24262306a36Sopenharmony_ci		{"1",	10,	1LL},
24362306a36Sopenharmony_ci		{"127",	10,	127LL},
24462306a36Sopenharmony_ci		{"128",	10,	128LL},
24562306a36Sopenharmony_ci		{"129",	10,	129LL},
24662306a36Sopenharmony_ci		{"255",	10,	255LL},
24762306a36Sopenharmony_ci		{"256",	10,	256LL},
24862306a36Sopenharmony_ci		{"257",	10,	257LL},
24962306a36Sopenharmony_ci		{"32767",	10,	32767LL},
25062306a36Sopenharmony_ci		{"32768",	10,	32768LL},
25162306a36Sopenharmony_ci		{"32769",	10,	32769LL},
25262306a36Sopenharmony_ci		{"65535",	10,	65535LL},
25362306a36Sopenharmony_ci		{"65536",	10,	65536LL},
25462306a36Sopenharmony_ci		{"65537",	10,	65537LL},
25562306a36Sopenharmony_ci		{"2147483647",	10,	2147483647LL},
25662306a36Sopenharmony_ci		{"2147483648",	10,	2147483648LL},
25762306a36Sopenharmony_ci		{"2147483649",	10,	2147483649LL},
25862306a36Sopenharmony_ci		{"4294967295",	10,	4294967295LL},
25962306a36Sopenharmony_ci		{"4294967296",	10,	4294967296LL},
26062306a36Sopenharmony_ci		{"4294967297",	10,	4294967297LL},
26162306a36Sopenharmony_ci		{"9223372036854775807",	10,	9223372036854775807LL},
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci		{"-0",	10,	0LL},
26462306a36Sopenharmony_ci		{"-1",	10,	-1LL},
26562306a36Sopenharmony_ci		{"-2",	10,	-2LL},
26662306a36Sopenharmony_ci		{"-9223372036854775808",	10,	LLONG_MIN},
26762306a36Sopenharmony_ci	};
26862306a36Sopenharmony_ci	TEST_OK(kstrtoll, long long, "%lld", test_ll_ok);
26962306a36Sopenharmony_ci}
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_cistatic void __init test_kstrtoll_fail(void)
27262306a36Sopenharmony_ci{
27362306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_ll_fail) = {
27462306a36Sopenharmony_ci		{"9223372036854775808",	10},
27562306a36Sopenharmony_ci		{"9223372036854775809",	10},
27662306a36Sopenharmony_ci		{"18446744073709551614",	10},
27762306a36Sopenharmony_ci		{"18446744073709551615",	10},
27862306a36Sopenharmony_ci		{"-9223372036854775809",	10},
27962306a36Sopenharmony_ci		{"-18446744073709551614",	10},
28062306a36Sopenharmony_ci		{"-18446744073709551615",	10},
28162306a36Sopenharmony_ci		/* sign is first character if any */
28262306a36Sopenharmony_ci		{"-+1", 0},
28362306a36Sopenharmony_ci		{"-+1", 8},
28462306a36Sopenharmony_ci		{"-+1", 10},
28562306a36Sopenharmony_ci		{"-+1", 16},
28662306a36Sopenharmony_ci	};
28762306a36Sopenharmony_ci	TEST_FAIL(kstrtoll, long long, "%lld", test_ll_fail);
28862306a36Sopenharmony_ci}
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_cistatic void __init test_kstrtou64_ok(void)
29162306a36Sopenharmony_ci{
29262306a36Sopenharmony_ci	DECLARE_TEST_OK(u64, struct test_u64);
29362306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_u64, test_u64_ok) = {
29462306a36Sopenharmony_ci		{"0",	10,	0},
29562306a36Sopenharmony_ci		{"1",	10,	1},
29662306a36Sopenharmony_ci		{"126",	10,	126},
29762306a36Sopenharmony_ci		{"127",	10,	127},
29862306a36Sopenharmony_ci		{"128",	10,	128},
29962306a36Sopenharmony_ci		{"129",	10,	129},
30062306a36Sopenharmony_ci		{"254",	10,	254},
30162306a36Sopenharmony_ci		{"255",	10,	255},
30262306a36Sopenharmony_ci		{"256",	10,	256},
30362306a36Sopenharmony_ci		{"257",	10,	257},
30462306a36Sopenharmony_ci		{"32766",	10,	32766},
30562306a36Sopenharmony_ci		{"32767",	10,	32767},
30662306a36Sopenharmony_ci		{"32768",	10,	32768},
30762306a36Sopenharmony_ci		{"32769",	10,	32769},
30862306a36Sopenharmony_ci		{"65534",	10,	65534},
30962306a36Sopenharmony_ci		{"65535",	10,	65535},
31062306a36Sopenharmony_ci		{"65536",	10,	65536},
31162306a36Sopenharmony_ci		{"65537",	10,	65537},
31262306a36Sopenharmony_ci		{"2147483646",	10,	2147483646},
31362306a36Sopenharmony_ci		{"2147483647",	10,	2147483647},
31462306a36Sopenharmony_ci		{"2147483648",	10,	2147483648ULL},
31562306a36Sopenharmony_ci		{"2147483649",	10,	2147483649ULL},
31662306a36Sopenharmony_ci		{"4294967294",	10,	4294967294ULL},
31762306a36Sopenharmony_ci		{"4294967295",	10,	4294967295ULL},
31862306a36Sopenharmony_ci		{"4294967296",	10,	4294967296ULL},
31962306a36Sopenharmony_ci		{"4294967297",	10,	4294967297ULL},
32062306a36Sopenharmony_ci		{"9223372036854775806",	10,	9223372036854775806ULL},
32162306a36Sopenharmony_ci		{"9223372036854775807",	10,	9223372036854775807ULL},
32262306a36Sopenharmony_ci		{"9223372036854775808",	10,	9223372036854775808ULL},
32362306a36Sopenharmony_ci		{"9223372036854775809",	10,	9223372036854775809ULL},
32462306a36Sopenharmony_ci		{"18446744073709551614",	10,	18446744073709551614ULL},
32562306a36Sopenharmony_ci		{"18446744073709551615",	10,	18446744073709551615ULL},
32662306a36Sopenharmony_ci	};
32762306a36Sopenharmony_ci	TEST_OK(kstrtou64, u64, "%llu", test_u64_ok);
32862306a36Sopenharmony_ci}
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_cistatic void __init test_kstrtou64_fail(void)
33162306a36Sopenharmony_ci{
33262306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_u64_fail) = {
33362306a36Sopenharmony_ci		{"-2",	10},
33462306a36Sopenharmony_ci		{"-1",	10},
33562306a36Sopenharmony_ci		{"18446744073709551616",	10},
33662306a36Sopenharmony_ci		{"18446744073709551617",	10},
33762306a36Sopenharmony_ci	};
33862306a36Sopenharmony_ci	TEST_FAIL(kstrtou64, u64, "%llu", test_u64_fail);
33962306a36Sopenharmony_ci}
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_cistatic void __init test_kstrtos64_ok(void)
34262306a36Sopenharmony_ci{
34362306a36Sopenharmony_ci	DECLARE_TEST_OK(s64, struct test_s64);
34462306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_s64, test_s64_ok) = {
34562306a36Sopenharmony_ci		{"-128",	10,	-128},
34662306a36Sopenharmony_ci		{"-127",	10,	-127},
34762306a36Sopenharmony_ci		{"-1",	10,	-1},
34862306a36Sopenharmony_ci		{"0",	10,	0},
34962306a36Sopenharmony_ci		{"1",	10,	1},
35062306a36Sopenharmony_ci		{"126",	10,	126},
35162306a36Sopenharmony_ci		{"127",	10,	127},
35262306a36Sopenharmony_ci		{"128",	10,	128},
35362306a36Sopenharmony_ci		{"129",	10,	129},
35462306a36Sopenharmony_ci		{"254",	10,	254},
35562306a36Sopenharmony_ci		{"255",	10,	255},
35662306a36Sopenharmony_ci		{"256",	10,	256},
35762306a36Sopenharmony_ci		{"257",	10,	257},
35862306a36Sopenharmony_ci		{"32766",	10,	32766},
35962306a36Sopenharmony_ci		{"32767",	10,	32767},
36062306a36Sopenharmony_ci		{"32768",	10,	32768},
36162306a36Sopenharmony_ci		{"32769",	10,	32769},
36262306a36Sopenharmony_ci		{"65534",	10,	65534},
36362306a36Sopenharmony_ci		{"65535",	10,	65535},
36462306a36Sopenharmony_ci		{"65536",	10,	65536},
36562306a36Sopenharmony_ci		{"65537",	10,	65537},
36662306a36Sopenharmony_ci		{"2147483646",	10,	2147483646},
36762306a36Sopenharmony_ci		{"2147483647",	10,	2147483647},
36862306a36Sopenharmony_ci		{"2147483648",	10,	2147483648LL},
36962306a36Sopenharmony_ci		{"2147483649",	10,	2147483649LL},
37062306a36Sopenharmony_ci		{"4294967294",	10,	4294967294LL},
37162306a36Sopenharmony_ci		{"4294967295",	10,	4294967295LL},
37262306a36Sopenharmony_ci		{"4294967296",	10,	4294967296LL},
37362306a36Sopenharmony_ci		{"4294967297",	10,	4294967297LL},
37462306a36Sopenharmony_ci		{"9223372036854775806",	10,	9223372036854775806LL},
37562306a36Sopenharmony_ci		{"9223372036854775807",	10,	9223372036854775807LL},
37662306a36Sopenharmony_ci	};
37762306a36Sopenharmony_ci	TEST_OK(kstrtos64, s64, "%lld", test_s64_ok);
37862306a36Sopenharmony_ci}
37962306a36Sopenharmony_ci
38062306a36Sopenharmony_cistatic void __init test_kstrtos64_fail(void)
38162306a36Sopenharmony_ci{
38262306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_s64_fail) = {
38362306a36Sopenharmony_ci		{"9223372036854775808",	10},
38462306a36Sopenharmony_ci		{"9223372036854775809",	10},
38562306a36Sopenharmony_ci		{"18446744073709551614",	10},
38662306a36Sopenharmony_ci		{"18446744073709551615",	10},
38762306a36Sopenharmony_ci		{"18446744073709551616",	10},
38862306a36Sopenharmony_ci		{"18446744073709551617",	10},
38962306a36Sopenharmony_ci	};
39062306a36Sopenharmony_ci	TEST_FAIL(kstrtos64, s64, "%lld", test_s64_fail);
39162306a36Sopenharmony_ci}
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_cistatic void __init test_kstrtou32_ok(void)
39462306a36Sopenharmony_ci{
39562306a36Sopenharmony_ci	DECLARE_TEST_OK(u32, struct test_u32);
39662306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_u32, test_u32_ok) = {
39762306a36Sopenharmony_ci		{"0",	10,	0},
39862306a36Sopenharmony_ci		{"1",	10,	1},
39962306a36Sopenharmony_ci		{"126",	10,	126},
40062306a36Sopenharmony_ci		{"127",	10,	127},
40162306a36Sopenharmony_ci		{"128",	10,	128},
40262306a36Sopenharmony_ci		{"129",	10,	129},
40362306a36Sopenharmony_ci		{"254",	10,	254},
40462306a36Sopenharmony_ci		{"255",	10,	255},
40562306a36Sopenharmony_ci		{"256",	10,	256},
40662306a36Sopenharmony_ci		{"257",	10,	257},
40762306a36Sopenharmony_ci		{"32766",	10,	32766},
40862306a36Sopenharmony_ci		{"32767",	10,	32767},
40962306a36Sopenharmony_ci		{"32768",	10,	32768},
41062306a36Sopenharmony_ci		{"32769",	10,	32769},
41162306a36Sopenharmony_ci		{"65534",	10,	65534},
41262306a36Sopenharmony_ci		{"65535",	10,	65535},
41362306a36Sopenharmony_ci		{"65536",	10,	65536},
41462306a36Sopenharmony_ci		{"65537",	10,	65537},
41562306a36Sopenharmony_ci		{"2147483646",	10,	2147483646},
41662306a36Sopenharmony_ci		{"2147483647",	10,	2147483647},
41762306a36Sopenharmony_ci		{"2147483648",	10,	2147483648U},
41862306a36Sopenharmony_ci		{"2147483649",	10,	2147483649U},
41962306a36Sopenharmony_ci		{"4294967294",	10,	4294967294U},
42062306a36Sopenharmony_ci		{"4294967295",	10,	4294967295U},
42162306a36Sopenharmony_ci	};
42262306a36Sopenharmony_ci	TEST_OK(kstrtou32, u32, "%u", test_u32_ok);
42362306a36Sopenharmony_ci}
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_cistatic void __init test_kstrtou32_fail(void)
42662306a36Sopenharmony_ci{
42762306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_u32_fail) = {
42862306a36Sopenharmony_ci		{"-2",	10},
42962306a36Sopenharmony_ci		{"-1",	10},
43062306a36Sopenharmony_ci		{"4294967296",	10},
43162306a36Sopenharmony_ci		{"4294967297",	10},
43262306a36Sopenharmony_ci		{"9223372036854775806",	10},
43362306a36Sopenharmony_ci		{"9223372036854775807",	10},
43462306a36Sopenharmony_ci		{"9223372036854775808",	10},
43562306a36Sopenharmony_ci		{"9223372036854775809",	10},
43662306a36Sopenharmony_ci		{"18446744073709551614",	10},
43762306a36Sopenharmony_ci		{"18446744073709551615",	10},
43862306a36Sopenharmony_ci		{"18446744073709551616",	10},
43962306a36Sopenharmony_ci		{"18446744073709551617",	10},
44062306a36Sopenharmony_ci	};
44162306a36Sopenharmony_ci	TEST_FAIL(kstrtou32, u32, "%u", test_u32_fail);
44262306a36Sopenharmony_ci}
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_cistatic void __init test_kstrtos32_ok(void)
44562306a36Sopenharmony_ci{
44662306a36Sopenharmony_ci	DECLARE_TEST_OK(s32, struct test_s32);
44762306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_s32, test_s32_ok) = {
44862306a36Sopenharmony_ci		{"-128",	10,	-128},
44962306a36Sopenharmony_ci		{"-127",	10,	-127},
45062306a36Sopenharmony_ci		{"-1",	10,	-1},
45162306a36Sopenharmony_ci		{"0",	10,	0},
45262306a36Sopenharmony_ci		{"1",	10,	1},
45362306a36Sopenharmony_ci		{"126",	10,	126},
45462306a36Sopenharmony_ci		{"127",	10,	127},
45562306a36Sopenharmony_ci		{"128",	10,	128},
45662306a36Sopenharmony_ci		{"129",	10,	129},
45762306a36Sopenharmony_ci		{"254",	10,	254},
45862306a36Sopenharmony_ci		{"255",	10,	255},
45962306a36Sopenharmony_ci		{"256",	10,	256},
46062306a36Sopenharmony_ci		{"257",	10,	257},
46162306a36Sopenharmony_ci		{"32766",	10,	32766},
46262306a36Sopenharmony_ci		{"32767",	10,	32767},
46362306a36Sopenharmony_ci		{"32768",	10,	32768},
46462306a36Sopenharmony_ci		{"32769",	10,	32769},
46562306a36Sopenharmony_ci		{"65534",	10,	65534},
46662306a36Sopenharmony_ci		{"65535",	10,	65535},
46762306a36Sopenharmony_ci		{"65536",	10,	65536},
46862306a36Sopenharmony_ci		{"65537",	10,	65537},
46962306a36Sopenharmony_ci		{"2147483646",	10,	2147483646},
47062306a36Sopenharmony_ci		{"2147483647",	10,	2147483647},
47162306a36Sopenharmony_ci	};
47262306a36Sopenharmony_ci	TEST_OK(kstrtos32, s32, "%d", test_s32_ok);
47362306a36Sopenharmony_ci}
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_cistatic void __init test_kstrtos32_fail(void)
47662306a36Sopenharmony_ci{
47762306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_s32_fail) = {
47862306a36Sopenharmony_ci		{"2147483648",	10},
47962306a36Sopenharmony_ci		{"2147483649",	10},
48062306a36Sopenharmony_ci		{"4294967294",	10},
48162306a36Sopenharmony_ci		{"4294967295",	10},
48262306a36Sopenharmony_ci		{"4294967296",	10},
48362306a36Sopenharmony_ci		{"4294967297",	10},
48462306a36Sopenharmony_ci		{"9223372036854775806",	10},
48562306a36Sopenharmony_ci		{"9223372036854775807",	10},
48662306a36Sopenharmony_ci		{"9223372036854775808",	10},
48762306a36Sopenharmony_ci		{"9223372036854775809",	10},
48862306a36Sopenharmony_ci		{"18446744073709551614",	10},
48962306a36Sopenharmony_ci		{"18446744073709551615",	10},
49062306a36Sopenharmony_ci		{"18446744073709551616",	10},
49162306a36Sopenharmony_ci		{"18446744073709551617",	10},
49262306a36Sopenharmony_ci	};
49362306a36Sopenharmony_ci	TEST_FAIL(kstrtos32, s32, "%d", test_s32_fail);
49462306a36Sopenharmony_ci}
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_cistatic void __init test_kstrtou16_ok(void)
49762306a36Sopenharmony_ci{
49862306a36Sopenharmony_ci	DECLARE_TEST_OK(u16, struct test_u16);
49962306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_u16, test_u16_ok) = {
50062306a36Sopenharmony_ci		{"0",	10,	0},
50162306a36Sopenharmony_ci		{"1",	10,	1},
50262306a36Sopenharmony_ci		{"126",	10,	126},
50362306a36Sopenharmony_ci		{"127",	10,	127},
50462306a36Sopenharmony_ci		{"128",	10,	128},
50562306a36Sopenharmony_ci		{"129",	10,	129},
50662306a36Sopenharmony_ci		{"254",	10,	254},
50762306a36Sopenharmony_ci		{"255",	10,	255},
50862306a36Sopenharmony_ci		{"256",	10,	256},
50962306a36Sopenharmony_ci		{"257",	10,	257},
51062306a36Sopenharmony_ci		{"32766",	10,	32766},
51162306a36Sopenharmony_ci		{"32767",	10,	32767},
51262306a36Sopenharmony_ci		{"32768",	10,	32768},
51362306a36Sopenharmony_ci		{"32769",	10,	32769},
51462306a36Sopenharmony_ci		{"65534",	10,	65534},
51562306a36Sopenharmony_ci		{"65535",	10,	65535},
51662306a36Sopenharmony_ci	};
51762306a36Sopenharmony_ci	TEST_OK(kstrtou16, u16, "%hu", test_u16_ok);
51862306a36Sopenharmony_ci}
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_cistatic void __init test_kstrtou16_fail(void)
52162306a36Sopenharmony_ci{
52262306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_u16_fail) = {
52362306a36Sopenharmony_ci		{"-2",	10},
52462306a36Sopenharmony_ci		{"-1",	10},
52562306a36Sopenharmony_ci		{"65536",	10},
52662306a36Sopenharmony_ci		{"65537",	10},
52762306a36Sopenharmony_ci		{"2147483646",	10},
52862306a36Sopenharmony_ci		{"2147483647",	10},
52962306a36Sopenharmony_ci		{"2147483648",	10},
53062306a36Sopenharmony_ci		{"2147483649",	10},
53162306a36Sopenharmony_ci		{"4294967294",	10},
53262306a36Sopenharmony_ci		{"4294967295",	10},
53362306a36Sopenharmony_ci		{"4294967296",	10},
53462306a36Sopenharmony_ci		{"4294967297",	10},
53562306a36Sopenharmony_ci		{"9223372036854775806",	10},
53662306a36Sopenharmony_ci		{"9223372036854775807",	10},
53762306a36Sopenharmony_ci		{"9223372036854775808",	10},
53862306a36Sopenharmony_ci		{"9223372036854775809",	10},
53962306a36Sopenharmony_ci		{"18446744073709551614",	10},
54062306a36Sopenharmony_ci		{"18446744073709551615",	10},
54162306a36Sopenharmony_ci		{"18446744073709551616",	10},
54262306a36Sopenharmony_ci		{"18446744073709551617",	10},
54362306a36Sopenharmony_ci	};
54462306a36Sopenharmony_ci	TEST_FAIL(kstrtou16, u16, "%hu", test_u16_fail);
54562306a36Sopenharmony_ci}
54662306a36Sopenharmony_ci
54762306a36Sopenharmony_cistatic void __init test_kstrtos16_ok(void)
54862306a36Sopenharmony_ci{
54962306a36Sopenharmony_ci	DECLARE_TEST_OK(s16, struct test_s16);
55062306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_s16, test_s16_ok) = {
55162306a36Sopenharmony_ci		{"-130",	10,	-130},
55262306a36Sopenharmony_ci		{"-129",	10,	-129},
55362306a36Sopenharmony_ci		{"-128",	10,	-128},
55462306a36Sopenharmony_ci		{"-127",	10,	-127},
55562306a36Sopenharmony_ci		{"-1",	10,	-1},
55662306a36Sopenharmony_ci		{"0",	10,	0},
55762306a36Sopenharmony_ci		{"1",	10,	1},
55862306a36Sopenharmony_ci		{"126",	10,	126},
55962306a36Sopenharmony_ci		{"127",	10,	127},
56062306a36Sopenharmony_ci		{"128",	10,	128},
56162306a36Sopenharmony_ci		{"129",	10,	129},
56262306a36Sopenharmony_ci		{"254",	10,	254},
56362306a36Sopenharmony_ci		{"255",	10,	255},
56462306a36Sopenharmony_ci		{"256",	10,	256},
56562306a36Sopenharmony_ci		{"257",	10,	257},
56662306a36Sopenharmony_ci		{"32766",	10,	32766},
56762306a36Sopenharmony_ci		{"32767",	10,	32767},
56862306a36Sopenharmony_ci	};
56962306a36Sopenharmony_ci	TEST_OK(kstrtos16, s16, "%hd", test_s16_ok);
57062306a36Sopenharmony_ci}
57162306a36Sopenharmony_ci
57262306a36Sopenharmony_cistatic void __init test_kstrtos16_fail(void)
57362306a36Sopenharmony_ci{
57462306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_s16_fail) = {
57562306a36Sopenharmony_ci		{"32768",	10},
57662306a36Sopenharmony_ci		{"32769",	10},
57762306a36Sopenharmony_ci		{"65534",	10},
57862306a36Sopenharmony_ci		{"65535",	10},
57962306a36Sopenharmony_ci		{"65536",	10},
58062306a36Sopenharmony_ci		{"65537",	10},
58162306a36Sopenharmony_ci		{"2147483646",	10},
58262306a36Sopenharmony_ci		{"2147483647",	10},
58362306a36Sopenharmony_ci		{"2147483648",	10},
58462306a36Sopenharmony_ci		{"2147483649",	10},
58562306a36Sopenharmony_ci		{"4294967294",	10},
58662306a36Sopenharmony_ci		{"4294967295",	10},
58762306a36Sopenharmony_ci		{"4294967296",	10},
58862306a36Sopenharmony_ci		{"4294967297",	10},
58962306a36Sopenharmony_ci		{"9223372036854775806",	10},
59062306a36Sopenharmony_ci		{"9223372036854775807",	10},
59162306a36Sopenharmony_ci		{"9223372036854775808",	10},
59262306a36Sopenharmony_ci		{"9223372036854775809",	10},
59362306a36Sopenharmony_ci		{"18446744073709551614",	10},
59462306a36Sopenharmony_ci		{"18446744073709551615",	10},
59562306a36Sopenharmony_ci		{"18446744073709551616",	10},
59662306a36Sopenharmony_ci		{"18446744073709551617",	10},
59762306a36Sopenharmony_ci	};
59862306a36Sopenharmony_ci	TEST_FAIL(kstrtos16, s16, "%hd", test_s16_fail);
59962306a36Sopenharmony_ci}
60062306a36Sopenharmony_ci
60162306a36Sopenharmony_cistatic void __init test_kstrtou8_ok(void)
60262306a36Sopenharmony_ci{
60362306a36Sopenharmony_ci	DECLARE_TEST_OK(u8, struct test_u8);
60462306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_u8, test_u8_ok) = {
60562306a36Sopenharmony_ci		{"0",	10,	0},
60662306a36Sopenharmony_ci		{"1",	10,	1},
60762306a36Sopenharmony_ci		{"126",	10,	126},
60862306a36Sopenharmony_ci		{"127",	10,	127},
60962306a36Sopenharmony_ci		{"128",	10,	128},
61062306a36Sopenharmony_ci		{"129",	10,	129},
61162306a36Sopenharmony_ci		{"254",	10,	254},
61262306a36Sopenharmony_ci		{"255",	10,	255},
61362306a36Sopenharmony_ci	};
61462306a36Sopenharmony_ci	TEST_OK(kstrtou8, u8, "%hhu", test_u8_ok);
61562306a36Sopenharmony_ci}
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_cistatic void __init test_kstrtou8_fail(void)
61862306a36Sopenharmony_ci{
61962306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_u8_fail) = {
62062306a36Sopenharmony_ci		{"-2",	10},
62162306a36Sopenharmony_ci		{"-1",	10},
62262306a36Sopenharmony_ci		{"256",	10},
62362306a36Sopenharmony_ci		{"257",	10},
62462306a36Sopenharmony_ci		{"32766",	10},
62562306a36Sopenharmony_ci		{"32767",	10},
62662306a36Sopenharmony_ci		{"32768",	10},
62762306a36Sopenharmony_ci		{"32769",	10},
62862306a36Sopenharmony_ci		{"65534",	10},
62962306a36Sopenharmony_ci		{"65535",	10},
63062306a36Sopenharmony_ci		{"65536",	10},
63162306a36Sopenharmony_ci		{"65537",	10},
63262306a36Sopenharmony_ci		{"2147483646",	10},
63362306a36Sopenharmony_ci		{"2147483647",	10},
63462306a36Sopenharmony_ci		{"2147483648",	10},
63562306a36Sopenharmony_ci		{"2147483649",	10},
63662306a36Sopenharmony_ci		{"4294967294",	10},
63762306a36Sopenharmony_ci		{"4294967295",	10},
63862306a36Sopenharmony_ci		{"4294967296",	10},
63962306a36Sopenharmony_ci		{"4294967297",	10},
64062306a36Sopenharmony_ci		{"9223372036854775806",	10},
64162306a36Sopenharmony_ci		{"9223372036854775807",	10},
64262306a36Sopenharmony_ci		{"9223372036854775808",	10},
64362306a36Sopenharmony_ci		{"9223372036854775809",	10},
64462306a36Sopenharmony_ci		{"18446744073709551614",	10},
64562306a36Sopenharmony_ci		{"18446744073709551615",	10},
64662306a36Sopenharmony_ci		{"18446744073709551616",	10},
64762306a36Sopenharmony_ci		{"18446744073709551617",	10},
64862306a36Sopenharmony_ci	};
64962306a36Sopenharmony_ci	TEST_FAIL(kstrtou8, u8, "%hhu", test_u8_fail);
65062306a36Sopenharmony_ci}
65162306a36Sopenharmony_ci
65262306a36Sopenharmony_cistatic void __init test_kstrtos8_ok(void)
65362306a36Sopenharmony_ci{
65462306a36Sopenharmony_ci	DECLARE_TEST_OK(s8, struct test_s8);
65562306a36Sopenharmony_ci	static DEFINE_TEST_OK(struct test_s8, test_s8_ok) = {
65662306a36Sopenharmony_ci		{"-128",	10,	-128},
65762306a36Sopenharmony_ci		{"-127",	10,	-127},
65862306a36Sopenharmony_ci		{"-1",	10,	-1},
65962306a36Sopenharmony_ci		{"0",	10,	0},
66062306a36Sopenharmony_ci		{"1",	10,	1},
66162306a36Sopenharmony_ci		{"126",	10,	126},
66262306a36Sopenharmony_ci		{"127",	10,	127},
66362306a36Sopenharmony_ci	};
66462306a36Sopenharmony_ci	TEST_OK(kstrtos8, s8, "%hhd", test_s8_ok);
66562306a36Sopenharmony_ci}
66662306a36Sopenharmony_ci
66762306a36Sopenharmony_cistatic void __init test_kstrtos8_fail(void)
66862306a36Sopenharmony_ci{
66962306a36Sopenharmony_ci	static DEFINE_TEST_FAIL(test_s8_fail) = {
67062306a36Sopenharmony_ci		{"-130",	10},
67162306a36Sopenharmony_ci		{"-129",	10},
67262306a36Sopenharmony_ci		{"128",	10},
67362306a36Sopenharmony_ci		{"129",	10},
67462306a36Sopenharmony_ci		{"254",	10},
67562306a36Sopenharmony_ci		{"255",	10},
67662306a36Sopenharmony_ci		{"256",	10},
67762306a36Sopenharmony_ci		{"257",	10},
67862306a36Sopenharmony_ci		{"32766",	10},
67962306a36Sopenharmony_ci		{"32767",	10},
68062306a36Sopenharmony_ci		{"32768",	10},
68162306a36Sopenharmony_ci		{"32769",	10},
68262306a36Sopenharmony_ci		{"65534",	10},
68362306a36Sopenharmony_ci		{"65535",	10},
68462306a36Sopenharmony_ci		{"65536",	10},
68562306a36Sopenharmony_ci		{"65537",	10},
68662306a36Sopenharmony_ci		{"2147483646",	10},
68762306a36Sopenharmony_ci		{"2147483647",	10},
68862306a36Sopenharmony_ci		{"2147483648",	10},
68962306a36Sopenharmony_ci		{"2147483649",	10},
69062306a36Sopenharmony_ci		{"4294967294",	10},
69162306a36Sopenharmony_ci		{"4294967295",	10},
69262306a36Sopenharmony_ci		{"4294967296",	10},
69362306a36Sopenharmony_ci		{"4294967297",	10},
69462306a36Sopenharmony_ci		{"9223372036854775806",	10},
69562306a36Sopenharmony_ci		{"9223372036854775807",	10},
69662306a36Sopenharmony_ci		{"9223372036854775808",	10},
69762306a36Sopenharmony_ci		{"9223372036854775809",	10},
69862306a36Sopenharmony_ci		{"18446744073709551614",	10},
69962306a36Sopenharmony_ci		{"18446744073709551615",	10},
70062306a36Sopenharmony_ci		{"18446744073709551616",	10},
70162306a36Sopenharmony_ci		{"18446744073709551617",	10},
70262306a36Sopenharmony_ci	};
70362306a36Sopenharmony_ci	TEST_FAIL(kstrtos8, s8, "%hhd", test_s8_fail);
70462306a36Sopenharmony_ci}
70562306a36Sopenharmony_ci
70662306a36Sopenharmony_cistatic int __init test_kstrtox_init(void)
70762306a36Sopenharmony_ci{
70862306a36Sopenharmony_ci	test_kstrtoull_ok();
70962306a36Sopenharmony_ci	test_kstrtoull_fail();
71062306a36Sopenharmony_ci	test_kstrtoll_ok();
71162306a36Sopenharmony_ci	test_kstrtoll_fail();
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ci	test_kstrtou64_ok();
71462306a36Sopenharmony_ci	test_kstrtou64_fail();
71562306a36Sopenharmony_ci	test_kstrtos64_ok();
71662306a36Sopenharmony_ci	test_kstrtos64_fail();
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ci	test_kstrtou32_ok();
71962306a36Sopenharmony_ci	test_kstrtou32_fail();
72062306a36Sopenharmony_ci	test_kstrtos32_ok();
72162306a36Sopenharmony_ci	test_kstrtos32_fail();
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_ci	test_kstrtou16_ok();
72462306a36Sopenharmony_ci	test_kstrtou16_fail();
72562306a36Sopenharmony_ci	test_kstrtos16_ok();
72662306a36Sopenharmony_ci	test_kstrtos16_fail();
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci	test_kstrtou8_ok();
72962306a36Sopenharmony_ci	test_kstrtou8_fail();
73062306a36Sopenharmony_ci	test_kstrtos8_ok();
73162306a36Sopenharmony_ci	test_kstrtos8_fail();
73262306a36Sopenharmony_ci	return -EINVAL;
73362306a36Sopenharmony_ci}
73462306a36Sopenharmony_cimodule_init(test_kstrtox_init);
73562306a36Sopenharmony_ciMODULE_LICENSE("Dual BSD/GPL");
736