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