perf record: Fix the profiling of existing pid or whole box
authorMike Galbraith <efault@gmx.de>
Wed, 27 May 2009 08:10:51 +0000 (10:10 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 27 May 2009 10:31:03 +0000 (12:31 +0200)
Perf record bails if no command argument is provided, so you can't use
naked -a or -p to profile a running task or the whole box.

Allow foreground profiling of an existing pid or the entire system.

[ Impact: fix command option handling bug ]

Signed-off-by: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Documentation/perf_counter/builtin-record.c

index 431077a6fb7724a92f8f7cc7e0f99dac106360a3..4a068664a32aa7c5ac3bca5e863fa648b55ada90 100644 (file)
@@ -354,7 +354,7 @@ static int __cmd_record(int argc, const char **argv)
        signal(SIGCHLD, sig_handler);
        signal(SIGINT, sig_handler);
 
-       if (target_pid == -1) {
+       if (target_pid == -1 && argc) {
                pid = fork();
                if (pid < 0)
                        perror("failed to fork");
@@ -430,7 +430,7 @@ int cmd_record(int argc, const char **argv, const char *prefix)
        create_events_help(events_help_msg);
 
        argc = parse_options(argc, argv, options, record_usage, 0);
-       if (!argc)
+       if (!argc && target_pid == -1 && !system_wide)
                usage_with_options(record_usage, options);
 
        if (!nr_counters) {