Commit 78210c00 authored by Mark Brown's avatar Mark Brown Committed by ZhangPeng
Browse files

kselftest: Add a ksft_perror() helper

stable inclusion
from stable-v6.6.32
commit f70d849b679b3f493a3f4f3f94ee6cbc4647f85e
bugzilla: https://gitee.com/openeuler/kernel/issues/IA4MGD

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=f70d849b679b3f493a3f4f3f94ee6cbc4647f85e



--------------------------------

commit 907f33028871fa7c9a3db1efd467b78ef82cce20 upstream.

The standard library perror() function provides a convenient way to print
an error message based on the current errno but this doesn't play nicely
with KTAP output. Provide a helper which does an equivalent thing in a KTAP
compatible format.

nolibc doesn't have a strerror() and adding the table of strings required
doesn't seem like a good fit for what it's trying to do so when we're using
that only print the errno.

Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Stable-dep-of: 071af0c9e582 ("selftests: timers: Convert posix_timers test to generate KTAP output")
Signed-off-by: default avatarEdward Liaw <edliaw@google.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarZhangPeng <zhangpeng362@huawei.com>
parent 04b15ad5
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <sys/utsname.h>
#endif
@@ -156,6 +157,19 @@ static inline void ksft_print_msg(const char *msg, ...)
	va_end(args);
}

static inline void ksft_perror(const char *msg)
{
#ifndef NOLIBC
	ksft_print_msg("%s: %s (%d)\n", msg, strerror(errno), errno);
#else
	/*
	 * nolibc doesn't provide strerror() and it seems
	 * inappropriate to add one, just print the errno.
	 */
	ksft_print_msg("%s: %d)\n", msg, errno);
#endif
}

static inline void ksft_test_result_pass(const char *msg, ...)
{
	int saved_errno = errno;