Skip to content

Commit

Permalink
perf: Propagate term signal to child
Browse files Browse the repository at this point in the history
If we launch the child on behalf of the user, ensure that it dies
along with ourselves when we are interrupted.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
LKML-Reference: <1254616502-4728-1-git-send-email-chris@chris-wilson.co.uk>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Chris Wilson authored and Ingo Molnar committed Oct 4, 2009
1 parent 1ad0560 commit 933da83
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
6 changes: 6 additions & 0 deletions tools/perf/builtin-record.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ static int raw_samples = 0;
static int system_wide = 0;
static int profile_cpu = -1;
static pid_t target_pid = -1;
static pid_t child_pid = -1;
static int inherit = 1;
static int force = 0;
static int append_file = 0;
Expand Down Expand Up @@ -184,6 +185,9 @@ static void sig_handler(int sig)

static void sig_atexit(void)
{
if (child_pid != -1)
kill(child_pid, SIGTERM);

if (signr == -1)
return;

Expand Down Expand Up @@ -610,6 +614,8 @@ static int __cmd_record(int argc, const char **argv)
exit(-1);
}
}

child_pid = pid;
}

if (realtime_prio) {
Expand Down
8 changes: 7 additions & 1 deletion tools/perf/builtin-stat.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ static int run_idx = 0;
static int run_count = 1;
static int inherit = 1;
static int scale = 1;
static int target_pid = -1;
static pid_t target_pid = -1;
static pid_t child_pid = -1;
static int null_run = 0;

static int fd[MAX_NR_CPUS][MAX_COUNTERS];
Expand Down Expand Up @@ -285,6 +286,8 @@ static int run_perf_stat(int argc __used, const char **argv)
exit(-1);
}

child_pid = pid;

/*
* Wait for the child to be ready to exec.
*/
Expand Down Expand Up @@ -433,6 +436,9 @@ static void skip_signal(int signo)

static void sig_atexit(void)
{
if (child_pid != -1)
kill(child_pid, SIGTERM);

if (signr == -1)
return;

Expand Down

0 comments on commit 933da83

Please sign in to comment.