mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
perf test sigtrap: Print errno string when failing
Helps a bit the user figuring out why it is failing: Before: $ perf test sigtrap 73: Sigtrap : FAILED! $ perf test -v sigtrap 73: Sigtrap : --- start --- test child forked, pid 3816772 FAILED sys_perf_event_open() test child finished with -1 ---- end ---- Sigtrap: FAILED! $ After: $ perf test sigtrap 73: Sigtrap : FAILED! $ perf test -v sigtrap 73: Sigtrap : --- start --- test child forked, pid 3816772 FAILED sys_perf_event_open(): Permission denied test child finished with -1 ---- end ---- Sigtrap: FAILED! $ Cc: Adrian Hunter <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Fabian Hemmer <[email protected]> Cc: Ian Rogers <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Marco Elver <[email protected]> Cc: Mark Rutland <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: [email protected] Link: http://lore.kernel.org/lkml/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
1 parent
5504f67944
commit
e9c08f7229
1 file changed
+6
-3
@@ -5,9 +5,11 @@
|
||||
* Copyright (C) 2021, Google LLC.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <linux/hw_breakpoint.h>
|
||||
#include <linux/string.h>
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <sys/ioctl.h>
|
||||
@@ -117,6 +119,7 @@ static int test__sigtrap(struct test_suite *test __maybe_unused, int subtest __m
|
||||
struct sigaction oldact;
|
||||
pthread_t threads[NUM_THREADS];
|
||||
pthread_barrier_t barrier;
|
||||
char sbuf[STRERR_BUFSIZE];
|
||||
int i, fd, ret = TEST_FAIL;
|
||||
|
||||
pthread_barrier_init(&barrier, NULL, NUM_THREADS + 1);
|
||||
@@ -125,19 +128,19 @@ static int test__sigtrap(struct test_suite *test __maybe_unused, int subtest __m
|
||||
action.sa_sigaction = sigtrap_handler;
|
||||
sigemptyset(&action.sa_mask);
|
||||
if (sigaction(SIGTRAP, &action, &oldact)) {
|
||||
pr_debug("FAILED sigaction()\n");
|
||||
pr_debug("FAILED sigaction(): %s\n", str_error_r(errno, sbuf, sizeof(sbuf)));
|
||||
goto out;
|
||||
}
|
||||
|
||||
fd = sys_perf_event_open(&attr, 0, -1, -1, perf_event_open_cloexec_flag());
|
||||
if (fd < 0) {
|
||||
pr_debug("FAILED sys_perf_event_open()\n");
|
||||
pr_debug("FAILED sys_perf_event_open(): %s\n", str_error_r(errno, sbuf, sizeof(sbuf)));
|
||||
goto out_restore_sigaction;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_THREADS; i++) {
|
||||
if (pthread_create(&threads[i], NULL, test_thread, &barrier)) {
|
||||
pr_debug("FAILED pthread_create()");
|
||||
pr_debug("FAILED pthread_create(): %s\n", str_error_r(errno, sbuf, sizeof(sbuf)));
|
||||
goto out_close_perf_event;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user