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