Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #include <linux/kernel.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #define for_each_test(i, test)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 	for (i = 0; i < ARRAY_SIZE(test); i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) struct test_fail {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 	const char *str;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 	unsigned int base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define DEFINE_TEST_FAIL(test)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 	const struct test_fail test[] __initconst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define DECLARE_TEST_OK(type, test_type)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	test_type {				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 		const char *str;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 		unsigned int base;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 		type expected_res;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define DEFINE_TEST_OK(type, test)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	const type test[] __initconst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define TEST_FAIL(fn, type, fmt, test)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) {									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	unsigned int i;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	for_each_test(i, test) {					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 		const struct test_fail *t = &test[i];			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 		type tmp;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 		int rv;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 		tmp = 0;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 		rv = fn(t->str, t->base, &tmp);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 		if (rv >= 0) {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 			WARN(1, "str '%s', base %u, expected -E, got %d/" fmt "\n",	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 				t->str, t->base, rv, tmp);		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 			continue;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 		}							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	}								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define TEST_OK(fn, type, fmt, test)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) {									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	unsigned int i;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	for_each_test(i, test) {					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 		const typeof(test[0]) *t = &test[i];			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 		type res;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 		int rv;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 									\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 		rv = fn(t->str, t->base, &res);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 		if (rv != 0) {						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 			WARN(1, "str '%s', base %u, expected 0/" fmt ", got %d\n",	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 				t->str, t->base, t->expected_res, rv);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 			continue;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		}							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 		if (res != t->expected_res) {				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 			WARN(1, "str '%s', base %u, expected " fmt ", got " fmt "\n",	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 				t->str, t->base, t->expected_res, res);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 			continue;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 		}							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	}								\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) static void __init test_kstrtoull_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	DECLARE_TEST_OK(unsigned long long, struct test_ull);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	static DEFINE_TEST_OK(struct test_ull, test_ull_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 		{"0",	10,	0ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 		{"1",	10,	1ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 		{"127",	10,	127ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 		{"128",	10,	128ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 		{"129",	10,	129ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 		{"255",	10,	255ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 		{"256",	10,	256ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 		{"257",	10,	257ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 		{"32767",	10,	32767ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 		{"32768",	10,	32768ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		{"32769",	10,	32769ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 		{"65535",	10,	65535ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 		{"65536",	10,	65536ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		{"65537",	10,	65537ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		{"2147483647",	10,	2147483647ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		{"2147483648",	10,	2147483648ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		{"2147483649",	10,	2147483649ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 		{"4294967295",	10,	4294967295ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		{"4294967296",	10,	4294967296ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		{"4294967297",	10,	4294967297ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 		{"9223372036854775807",	10,	9223372036854775807ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 		{"9223372036854775808",	10,	9223372036854775808ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 		{"9223372036854775809",	10,	9223372036854775809ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 		{"18446744073709551614",	10,	18446744073709551614ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 		{"18446744073709551615",	10,	18446744073709551615ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 		{"00",		8,	00ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 		{"01",		8,	01ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		{"0177",	8,	0177ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 		{"0200",	8,	0200ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 		{"0201",	8,	0201ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 		{"0377",	8,	0377ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		{"0400",	8,	0400ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 		{"0401",	8,	0401ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 		{"077777",	8,	077777ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 		{"0100000",	8,	0100000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 		{"0100001",	8,	0100001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 		{"0177777",	8,	0177777ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 		{"0200000",	8,	0200000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 		{"0200001",	8,	0200001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 		{"017777777777",	8,	017777777777ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 		{"020000000000",	8,	020000000000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 		{"020000000001",	8,	020000000001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 		{"037777777777",	8,	037777777777ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 		{"040000000000",	8,	040000000000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 		{"040000000001",	8,	040000000001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 		{"0777777777777777777777",	8,	0777777777777777777777ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 		{"01000000000000000000000",	8,	01000000000000000000000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 		{"01000000000000000000001",	8,	01000000000000000000001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 		{"01777777777777777777776",	8,	01777777777777777777776ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 		{"01777777777777777777777",	8,	01777777777777777777777ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 		{"0x0",		16,	0x0ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 		{"0x1",		16,	0x1ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 		{"0x7f",	16,	0x7fULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 		{"0x80",	16,	0x80ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 		{"0x81",	16,	0x81ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 		{"0xff",	16,	0xffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 		{"0x100",	16,	0x100ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 		{"0x101",	16,	0x101ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 		{"0x7fff",	16,	0x7fffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 		{"0x8000",	16,	0x8000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 		{"0x8001",	16,	0x8001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 		{"0xffff",	16,	0xffffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 		{"0x10000",	16,	0x10000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 		{"0x10001",	16,	0x10001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 		{"0x7fffffff",	16,	0x7fffffffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 		{"0x80000000",	16,	0x80000000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 		{"0x80000001",	16,	0x80000001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 		{"0xffffffff",	16,	0xffffffffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 		{"0x100000000",	16,	0x100000000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 		{"0x100000001",	16,	0x100000001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 		{"0x7fffffffffffffff",	16,	0x7fffffffffffffffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 		{"0x8000000000000000",	16,	0x8000000000000000ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 		{"0x8000000000000001",	16,	0x8000000000000001ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 		{"0xfffffffffffffffe",	16,	0xfffffffffffffffeULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 		{"0xffffffffffffffff",	16,	0xffffffffffffffffULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 		{"0\n",	0,	0ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	TEST_OK(kstrtoull, unsigned long long, "%llu", test_ull_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) static void __init test_kstrtoull_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	static DEFINE_TEST_FAIL(test_ull_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 		{"",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 		{"",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 		{"",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 		{"",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 		{"\n",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 		{"\n",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 		{"\n",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 		{"\n",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 		{"\n0",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 		{"\n0",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 		{"\n0",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 		{"\n0",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 		{"+",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 		{"+",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 		{"+",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 		{"+",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 		{"-",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 		{"-",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 		{"-",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 		{"-",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 		{"0x",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 		{"0x",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 		{"0X",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 		{"0X",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 		{"0 ",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 		{"1+",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 		{"1-",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 		{" 2",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 		/* base autodetection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 		{"0x0z",	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 		{"0z",		0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 		{"a",		0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 		/* digit >= base */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 		{"2",	2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 		{"8",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 		{"a",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 		{"A",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 		{"g",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 		{"G",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 		/* overflow */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 		{"10000000000000000000000000000000000000000000000000000000000000000",	2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 		{"2000000000000000000000",	8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 		{"10000000000000000",	16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 		/* negative */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 		{"-0", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 		{"-0", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 		{"-0", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 		{"-0", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 		{"-1", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 		{"-1", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 		{"-1", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 		{"-1", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 		/* sign is first character if any */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 		{"-+1", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 		{"-+1", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 		{"-+1", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 		{"-+1", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 		/* nothing after \n */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 		{"0\n0", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 		{"0\n0", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 		{"0\n0", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 		{"0\n0", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 		{"0\n+", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 		{"0\n+", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 		{"0\n+", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 		{"0\n+", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 		{"0\n-", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 		{"0\n-", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 		{"0\n-", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 		{"0\n-", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 		{"0\n ", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 		{"0\n ", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 		{"0\n ", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 		{"0\n ", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	TEST_FAIL(kstrtoull, unsigned long long, "%llu", test_ull_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) static void __init test_kstrtoll_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 	DECLARE_TEST_OK(long long, struct test_ll);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 	static DEFINE_TEST_OK(struct test_ll, test_ll_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 		{"0",	10,	0LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 		{"1",	10,	1LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 		{"127",	10,	127LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 		{"128",	10,	128LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 		{"129",	10,	129LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 		{"255",	10,	255LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 		{"256",	10,	256LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 		{"257",	10,	257LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 		{"32767",	10,	32767LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 		{"32768",	10,	32768LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 		{"32769",	10,	32769LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 		{"65535",	10,	65535LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 		{"65536",	10,	65536LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 		{"65537",	10,	65537LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 		{"2147483647",	10,	2147483647LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 		{"2147483648",	10,	2147483648LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 		{"2147483649",	10,	2147483649LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 		{"4294967295",	10,	4294967295LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 		{"4294967296",	10,	4294967296LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 		{"4294967297",	10,	4294967297LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 		{"9223372036854775807",	10,	9223372036854775807LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 		{"-0",	10,	0LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 		{"-1",	10,	-1LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 		{"-2",	10,	-2LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 		{"-9223372036854775808",	10,	LLONG_MIN},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 	TEST_OK(kstrtoll, long long, "%lld", test_ll_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) static void __init test_kstrtoll_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 	static DEFINE_TEST_FAIL(test_ll_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 		{"-9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 		{"-18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 		{"-18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 		/* sign is first character if any */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 		{"-+1", 0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 		{"-+1", 8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 		{"-+1", 10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 		{"-+1", 16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	TEST_FAIL(kstrtoll, long long, "%lld", test_ll_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) static void __init test_kstrtou64_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 	DECLARE_TEST_OK(u64, struct test_u64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 	static DEFINE_TEST_OK(struct test_u64, test_u64_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 		{"256",	10,	256},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 		{"257",	10,	257},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 		{"32766",	10,	32766},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 		{"32767",	10,	32767},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 		{"32768",	10,	32768},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 		{"32769",	10,	32769},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 		{"65534",	10,	65534},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 		{"65535",	10,	65535},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 		{"65536",	10,	65536},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 		{"65537",	10,	65537},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 		{"2147483646",	10,	2147483646},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 		{"2147483647",	10,	2147483647},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 		{"2147483648",	10,	2147483648ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 		{"2147483649",	10,	2147483649ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 		{"4294967294",	10,	4294967294ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 		{"4294967295",	10,	4294967295ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 		{"4294967296",	10,	4294967296ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 		{"4294967297",	10,	4294967297ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 		{"9223372036854775806",	10,	9223372036854775806ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 		{"9223372036854775807",	10,	9223372036854775807ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 		{"9223372036854775808",	10,	9223372036854775808ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 		{"9223372036854775809",	10,	9223372036854775809ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 		{"18446744073709551614",	10,	18446744073709551614ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 		{"18446744073709551615",	10,	18446744073709551615ULL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 	TEST_OK(kstrtou64, u64, "%llu", test_u64_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) static void __init test_kstrtou64_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 	static DEFINE_TEST_FAIL(test_u64_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 		{"-2",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 		{"-1",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 	TEST_FAIL(kstrtou64, u64, "%llu", test_u64_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) static void __init test_kstrtos64_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 	DECLARE_TEST_OK(s64, struct test_s64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 	static DEFINE_TEST_OK(struct test_s64, test_s64_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 		{"-128",	10,	-128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 		{"-127",	10,	-127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 		{"-1",	10,	-1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 		{"256",	10,	256},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 		{"257",	10,	257},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 		{"32766",	10,	32766},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 		{"32767",	10,	32767},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) 		{"32768",	10,	32768},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 		{"32769",	10,	32769},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 		{"65534",	10,	65534},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 		{"65535",	10,	65535},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) 		{"65536",	10,	65536},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 		{"65537",	10,	65537},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) 		{"2147483646",	10,	2147483646},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) 		{"2147483647",	10,	2147483647},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) 		{"2147483648",	10,	2147483648LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) 		{"2147483649",	10,	2147483649LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) 		{"4294967294",	10,	4294967294LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) 		{"4294967295",	10,	4294967295LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) 		{"4294967296",	10,	4294967296LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) 		{"4294967297",	10,	4294967297LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) 		{"9223372036854775806",	10,	9223372036854775806LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) 		{"9223372036854775807",	10,	9223372036854775807LL},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) 	TEST_OK(kstrtos64, s64, "%lld", test_s64_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) static void __init test_kstrtos64_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) 	static DEFINE_TEST_FAIL(test_s64_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) 	TEST_FAIL(kstrtos64, s64, "%lld", test_s64_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) static void __init test_kstrtou32_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) 	DECLARE_TEST_OK(u32, struct test_u32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) 	static DEFINE_TEST_OK(struct test_u32, test_u32_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) 		{"256",	10,	256},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) 		{"257",	10,	257},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) 		{"32766",	10,	32766},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) 		{"32767",	10,	32767},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) 		{"32768",	10,	32768},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) 		{"32769",	10,	32769},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) 		{"65534",	10,	65534},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) 		{"65535",	10,	65535},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) 		{"65536",	10,	65536},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) 		{"65537",	10,	65537},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) 		{"2147483646",	10,	2147483646},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) 		{"2147483647",	10,	2147483647},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) 		{"2147483648",	10,	2147483648U},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) 		{"2147483649",	10,	2147483649U},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) 		{"4294967294",	10,	4294967294U},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) 		{"4294967295",	10,	4294967295U},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) 	TEST_OK(kstrtou32, u32, "%u", test_u32_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) static void __init test_kstrtou32_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) 	static DEFINE_TEST_FAIL(test_u32_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) 		{"-2",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) 		{"-1",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) 		{"4294967296",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) 		{"4294967297",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) 		{"9223372036854775806",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 		{"9223372036854775807",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) 	TEST_FAIL(kstrtou32, u32, "%u", test_u32_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) static void __init test_kstrtos32_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) 	DECLARE_TEST_OK(s32, struct test_s32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) 	static DEFINE_TEST_OK(struct test_s32, test_s32_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) 		{"-128",	10,	-128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) 		{"-127",	10,	-127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) 		{"-1",	10,	-1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) 		{"256",	10,	256},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) 		{"257",	10,	257},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) 		{"32766",	10,	32766},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) 		{"32767",	10,	32767},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) 		{"32768",	10,	32768},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) 		{"32769",	10,	32769},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) 		{"65534",	10,	65534},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) 		{"65535",	10,	65535},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) 		{"65536",	10,	65536},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) 		{"65537",	10,	65537},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) 		{"2147483646",	10,	2147483646},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) 		{"2147483647",	10,	2147483647},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) 	TEST_OK(kstrtos32, s32, "%d", test_s32_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) static void __init test_kstrtos32_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) 	static DEFINE_TEST_FAIL(test_s32_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) 		{"2147483648",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) 		{"2147483649",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) 		{"4294967294",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) 		{"4294967295",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) 		{"4294967296",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) 		{"4294967297",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) 		{"9223372036854775806",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) 		{"9223372036854775807",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) 	TEST_FAIL(kstrtos32, s32, "%d", test_s32_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) static void __init test_kstrtou16_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) 	DECLARE_TEST_OK(u16, struct test_u16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) 	static DEFINE_TEST_OK(struct test_u16, test_u16_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) 		{"256",	10,	256},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) 		{"257",	10,	257},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) 		{"32766",	10,	32766},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) 		{"32767",	10,	32767},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) 		{"32768",	10,	32768},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) 		{"32769",	10,	32769},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) 		{"65534",	10,	65534},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) 		{"65535",	10,	65535},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) 	TEST_OK(kstrtou16, u16, "%hu", test_u16_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) static void __init test_kstrtou16_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) 	static DEFINE_TEST_FAIL(test_u16_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) 		{"-2",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) 		{"-1",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) 		{"65536",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) 		{"65537",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) 		{"2147483646",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) 		{"2147483647",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) 		{"2147483648",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) 		{"2147483649",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) 		{"4294967294",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) 		{"4294967295",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) 		{"4294967296",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) 		{"4294967297",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) 		{"9223372036854775806",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) 		{"9223372036854775807",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) 	TEST_FAIL(kstrtou16, u16, "%hu", test_u16_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) static void __init test_kstrtos16_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) 	DECLARE_TEST_OK(s16, struct test_s16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) 	static DEFINE_TEST_OK(struct test_s16, test_s16_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) 		{"-130",	10,	-130},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) 		{"-129",	10,	-129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) 		{"-128",	10,	-128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) 		{"-127",	10,	-127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) 		{"-1",	10,	-1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) 		{"256",	10,	256},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) 		{"257",	10,	257},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) 		{"32766",	10,	32766},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) 		{"32767",	10,	32767},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) 	TEST_OK(kstrtos16, s16, "%hd", test_s16_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) static void __init test_kstrtos16_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) 	static DEFINE_TEST_FAIL(test_s16_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) 		{"32768",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) 		{"32769",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) 		{"65534",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) 		{"65535",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) 		{"65536",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) 		{"65537",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) 		{"2147483646",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) 		{"2147483647",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) 		{"2147483648",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) 		{"2147483649",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) 		{"4294967294",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) 		{"4294967295",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) 		{"4294967296",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) 		{"4294967297",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) 		{"9223372036854775806",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) 		{"9223372036854775807",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) 	TEST_FAIL(kstrtos16, s16, "%hd", test_s16_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) static void __init test_kstrtou8_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) 	DECLARE_TEST_OK(u8, struct test_u8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) 	static DEFINE_TEST_OK(struct test_u8, test_u8_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) 		{"128",	10,	128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) 		{"129",	10,	129},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) 		{"254",	10,	254},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) 		{"255",	10,	255},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) 	TEST_OK(kstrtou8, u8, "%hhu", test_u8_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) static void __init test_kstrtou8_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) 	static DEFINE_TEST_FAIL(test_u8_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) 		{"-2",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) 		{"-1",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) 		{"256",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) 		{"257",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) 		{"32766",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) 		{"32767",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) 		{"32768",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) 		{"32769",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) 		{"65534",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) 		{"65535",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) 		{"65536",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) 		{"65537",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) 		{"2147483646",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) 		{"2147483647",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) 		{"2147483648",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) 		{"2147483649",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) 		{"4294967294",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) 		{"4294967295",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) 		{"4294967296",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) 		{"4294967297",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) 		{"9223372036854775806",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) 		{"9223372036854775807",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) 	TEST_FAIL(kstrtou8, u8, "%hhu", test_u8_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) static void __init test_kstrtos8_ok(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) 	DECLARE_TEST_OK(s8, struct test_s8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) 	static DEFINE_TEST_OK(struct test_s8, test_s8_ok) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) 		{"-128",	10,	-128},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) 		{"-127",	10,	-127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) 		{"-1",	10,	-1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) 		{"0",	10,	0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) 		{"1",	10,	1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) 		{"126",	10,	126},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) 		{"127",	10,	127},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) 	TEST_OK(kstrtos8, s8, "%hhd", test_s8_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) static void __init test_kstrtos8_fail(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) 	static DEFINE_TEST_FAIL(test_s8_fail) = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) 		{"-130",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) 		{"-129",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) 		{"128",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) 		{"129",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) 		{"254",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) 		{"255",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) 		{"256",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) 		{"257",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) 		{"32766",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) 		{"32767",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) 		{"32768",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) 		{"32769",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) 		{"65534",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) 		{"65535",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) 		{"65536",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) 		{"65537",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) 		{"2147483646",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) 		{"2147483647",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) 		{"2147483648",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) 		{"2147483649",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) 		{"4294967294",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) 		{"4294967295",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) 		{"4294967296",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) 		{"4294967297",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) 		{"9223372036854775806",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) 		{"9223372036854775807",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) 		{"9223372036854775808",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) 		{"9223372036854775809",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) 		{"18446744073709551614",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) 		{"18446744073709551615",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) 		{"18446744073709551616",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) 		{"18446744073709551617",	10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) 	TEST_FAIL(kstrtos8, s8, "%hhd", test_s8_fail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) static int __init test_kstrtox_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) 	test_kstrtoull_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) 	test_kstrtoull_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) 	test_kstrtoll_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) 	test_kstrtoll_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) 	test_kstrtou64_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) 	test_kstrtou64_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) 	test_kstrtos64_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) 	test_kstrtos64_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) 	test_kstrtou32_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) 	test_kstrtou32_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) 	test_kstrtos32_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) 	test_kstrtos32_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) 	test_kstrtou16_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) 	test_kstrtou16_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) 	test_kstrtos16_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) 	test_kstrtos16_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) 	test_kstrtou8_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) 	test_kstrtou8_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) 	test_kstrtos8_ok();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) 	test_kstrtos8_fail();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) 	return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) module_init(test_kstrtox_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) MODULE_LICENSE("Dual BSD/GPL");