Commit e73bcb37 authored by Feng Jiang's avatar Feng Jiang Committed by Paul Walmsley
Browse files

lib/string_kunit: extend benchmarks to strnlen() and chr searches



Extend the string benchmarking suite to include strnlen(), strchr(),
and strrchr().

For character search functions strchr() and strrchr(), the benchmark
targets the NUL character. This ensures the entire string is scanned,
providing a consistent measure of full-length processing efficiency
comparable to strlen().

Suggested-by: default avatarAndy Shevchenko <andy@kernel.org>
Suggested-by: default avatarEric Biggers <ebiggers@kernel.org>
Signed-off-by: default avatarFeng Jiang <jiangfeng@kylinos.cn>
Acked-by: default avatarAndy Shevchenko <andy@kernel.org>
Reviewed-by: default avatarKees Cook <kees@kernel.org>
Link: https://patch.msgid.link/20260130025018.172925-6-jiangfeng@kylinos.cn


Signed-off-by: default avatarPaul Walmsley <pjw@kernel.org>
parent 0020240a
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -866,6 +866,21 @@ static void string_bench_strlen(struct kunit *test)
	STRING_BENCH_BUF(test, buf, len, strlen, buf);
}

static void string_bench_strnlen(struct kunit *test)
{
	STRING_BENCH_BUF(test, buf, len, strnlen, buf, len);
}

static void string_bench_strchr(struct kunit *test)
{
	STRING_BENCH_BUF(test, buf, len, strchr, buf, '\0');
}

static void string_bench_strrchr(struct kunit *test)
{
	STRING_BENCH_BUF(test, buf, len, strrchr, buf, '\0');
}

static struct kunit_case string_test_cases[] = {
	KUNIT_CASE(string_test_memset16),
	KUNIT_CASE(string_test_memset32),
@@ -892,6 +907,9 @@ static struct kunit_case string_test_cases[] = {
	KUNIT_CASE(string_test_memtostr),
	KUNIT_CASE(string_test_strends),
	KUNIT_CASE(string_bench_strlen),
	KUNIT_CASE(string_bench_strnlen),
	KUNIT_CASE(string_bench_strchr),
	KUNIT_CASE(string_bench_strrchr),
	{}
};