lkml.org 
[lkml]   [2009]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/1] perf record: We should fork only if a program was specified to run
    From
    Date
    On Fri, 2009-12-18 at 18:42 -0200, Arnaldo Carvalho de Melo wrote:
    > From: Arnaldo Carvalho de Melo <acme@redhat.com>
    >
    > IOW: Now 'perf record -a' works, this was a bug introduced in:
    >
    > 856e96608a72412d319e498a3a7c557571f811bd
    > "perf record: Properly synchronize child creation"
    >
    > Reported-by: Pekka Enberg <penberg@cs.helsinki.fi>
    > Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    > Cc: Mike Galbraith <efault@gmx.de>
    > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    > Cc: Paul Mackerras <paulus@samba.org>
    > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    > ---
    > tools/perf/builtin-record.c | 9 +++++----
    > 1 files changed, 5 insertions(+), 4 deletions(-)
    >
    > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    > index 63136d0..90eedd9 100644
    > --- a/tools/perf/builtin-record.c
    > +++ b/tools/perf/builtin-record.c
    > @@ -402,7 +402,7 @@ static void atexit_header(void)
    > perf_header__write(&session->header, output, true);
    > }
    >
    > -static int __cmd_record(int argc __used, const char **argv)
    > +static int __cmd_record(int argc, const char **argv)
    > {
    > int i, counter;
    > struct stat st;
    > @@ -422,7 +422,8 @@ static int __cmd_record(int argc __used, const char **argv)
    > signal(SIGCHLD, sig_handler);
    > signal(SIGINT, sig_handler);
    >
    > - if (pipe(child_ready_pipe) < 0 || pipe(go_pipe) < 0) {
    > + if (target_pid == -1 && argc > 0 &&
    > + (pipe(child_ready_pipe) < 0 || pipe(go_pipe) < 0)) {
    > perror("failed to create pipes");
    > exit(-1);
    > }

    Why bother?

    > @@ -483,7 +484,7 @@ static int __cmd_record(int argc __used, const char **argv)
    >
    > atexit(atexit_header);
    >
    > - if (target_pid == -1) {
    > + if (target_pid == -1 && argc > 0) {
    > pid = fork();
    > if (pid < 0) {
    > perror("failed to fork");

    I'd write:

    target_pid == -1 && !system_wide

    > @@ -667,7 +668,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
    >
    > argc = parse_options(argc, argv, options, record_usage,
    > PARSE_OPT_STOP_AT_NON_OPTION);
    > - if (!argc && target_pid == -1 && (!system_wide || profile_cpu == -1))
    > + if (!argc && target_pid == -1 && !system_wide)
    > usage_with_options(record_usage, options);
    >
    > symbol__init();

    Right, so I was thinking -C would be enough to also start profiling..
    clearly messed up the logic though :/

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2009-12-18 21:55    [W:0.024 / U:34.432 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site