diff --git a/[refs] b/[refs] index cdf3c488066c..a7c9524ca5a1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 251e8e3c7235f5944805a64f24c79fc4696793f1 +refs/heads/master: 58d7e993b16b62d30f8ef27757614056fe4def11 diff --git a/trunk/Documentation/perf_counter/builtin-stat.c b/trunk/Documentation/perf_counter/builtin-stat.c index cf575c305a6c..03518d75d864 100644 --- a/trunk/Documentation/perf_counter/builtin-stat.c +++ b/trunk/Documentation/perf_counter/builtin-stat.c @@ -538,8 +538,14 @@ static void process_options(int argc, char **argv) } } +static void skip_signal(int signo) +{ +} + int cmd_stat(int argc, char **argv, const char *prefix) { + sigset_t blocked; + page_size = sysconf(_SC_PAGE_SIZE); process_options(argc, argv); @@ -548,5 +554,15 @@ int cmd_stat(int argc, char **argv, const char *prefix) assert(nr_cpus <= MAX_NR_CPUS); assert(nr_cpus >= 0); + /* + * We dont want to block the signals - that would cause + * child tasks to inherit that and Ctrl-C would not work. + * What we want is for Ctrl-C to work in the exec()-ed + * task, but being ignored by perf stat itself: + */ + signal(SIGINT, skip_signal); + signal(SIGALRM, skip_signal); + signal(SIGABRT, skip_signal); + return do_perfstat(argc, argv); }