aboutsummaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-04-20 15:58:01 +0200
committerIngo Molnar <mingo@elte.hu>2009-04-20 17:36:49 +0200
commite33e0a43736307512422e41aee6e24d5a8c39181 (patch)
treeb1ae3e3287d51dfc33a33724eb00712496b13900 /Documentation
parent1d8c8b209e9351a7de1307d7b9b6df4222b8d742 (diff)
perf_counter tools: add 'perf record' command
Move perf-record.c into the perf suite of commands. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/perf_counter/Documentation/perf-record.txt63
-rw-r--r--Documentation/perf_counter/Makefile1
-rw-r--r--Documentation/perf_counter/builtin-record.c (renamed from Documentation/perf_counter/perf-record.c)30
-rw-r--r--Documentation/perf_counter/builtin.h3
-rw-r--r--Documentation/perf_counter/command-list.txt3
-rw-r--r--Documentation/perf_counter/perf.c3
6 files changed, 73 insertions, 30 deletions
diff --git a/Documentation/perf_counter/Documentation/perf-record.txt b/Documentation/perf_counter/Documentation/perf-record.txt
new file mode 100644
index 00000000000..d07700e35eb
--- /dev/null
+++ b/Documentation/perf_counter/Documentation/perf-record.txt
@@ -0,0 +1,63 @@
+perf-record(1)
+==========
+
+NAME
+----
+perf-record - Run a command and record its profile into output.perf
+
+SYNOPSIS
+--------
+[verse]
+'perf record' [-e <EVENT> | --event=EVENT] [-l] [-a] <command>
+
+DESCRIPTION
+-----------
+This command runs a command and gathers a performance counter profile
+from it, into output.perf - without displaying anything.
+
+This file can then be inspected later on, using 'perf report'.
+
+
+OPTIONS
+-------
+<command>...::
+ Any command you can specify in a shell.
+
+-e::
+--event=::
+ 0:0: cpu-cycles
+ 0:0: cycles
+ 0:1: instructions
+ 0:2: cache-references
+ 0:3: cache-misses
+ 0:4: branch-instructions
+ 0:4: branches
+ 0:5: branch-misses
+ 0:6: bus-cycles
+ 1:0: cpu-clock
+ 1:1: task-clock
+ 1:2: page-faults
+ 1:2: faults
+ 1:5: minor-faults
+ 1:6: major-faults
+ 1:3: context-switches
+ 1:3: cs
+ 1:4: cpu-migrations
+ 1:4: migrations
+ rNNN: raw PMU events (eventsel+umask)
+
+-a::
+ system-wide collection
+
+-l::
+ scale counter values
+
+Configuration
+-------------
+
+EXAMPLES
+--------
+
+SEE ALSO
+--------
+linkperf:git-stat[1]
diff --git a/Documentation/perf_counter/Makefile b/Documentation/perf_counter/Makefile
index fb8b71744e5..b6c665eb22e 100644
--- a/Documentation/perf_counter/Makefile
+++ b/Documentation/perf_counter/Makefile
@@ -309,6 +309,7 @@ LIB_OBJS += usage.o
LIB_OBJS += wrapper.o
BUILTIN_OBJS += builtin-help.o
+BUILTIN_OBJS += builtin-record.o
BUILTIN_OBJS += builtin-stat.o
BUILTIN_OBJS += builtin-top.o
diff --git a/Documentation/perf_counter/perf-record.c b/Documentation/perf_counter/builtin-record.c
index 614de7c468b..4a50abf843e 100644
--- a/Documentation/perf_counter/perf-record.c
+++ b/Documentation/perf_counter/builtin-record.c
@@ -81,16 +81,12 @@
(void) (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })
-asmlinkage int sys_perf_counter_open(
+extern asmlinkage int sys_perf_counter_open(
struct perf_counter_hw_event *hw_event_uptr __user,
pid_t pid,
int cpu,
int group_fd,
- unsigned long flags)
-{
- return syscall(
- __NR_perf_counter_open, hw_event_uptr, pid, cpu, group_fd, flags);
-}
+ unsigned long flags);
#define MAX_COUNTERS 64
#define MAX_NR_CPUS 256
@@ -119,26 +115,6 @@ const unsigned int default_count[] = {
10000,
};
-static char *hw_event_names[] = {
- "CPU cycles",
- "instructions",
- "cache references",
- "cache misses",
- "branches",
- "branch misses",
- "bus cycles",
-};
-
-static char *sw_event_names[] = {
- "cpu clock ticks",
- "task clock ticks",
- "pagefaults",
- "context switches",
- "CPU migrations",
- "minor faults",
- "major faults",
-};
-
struct event_symbol {
__u64 event;
char *symbol;
@@ -414,7 +390,7 @@ static void sigchld_handler(int sig)
done = 1;
}
-int main(int argc, char *argv[])
+int cmd_record(int argc, const char **argv)
{
struct pollfd event_array[MAX_NR_CPUS * MAX_COUNTERS];
struct mmap_data mmap_array[MAX_NR_CPUS][MAX_COUNTERS];
diff --git a/Documentation/perf_counter/builtin.h b/Documentation/perf_counter/builtin.h
index 605323c691f..5854b1715f5 100644
--- a/Documentation/perf_counter/builtin.h
+++ b/Documentation/perf_counter/builtin.h
@@ -14,6 +14,7 @@ extern void prune_packed_objects(int);
extern int read_line_with_nul(char *buf, int size, FILE *file);
extern int check_pager_config(const char *cmd);
-extern int cmd_top(int argc, const char **argv, const char *prefix);
+extern int cmd_record(int argc, const char **argv, const char *prefix);
extern int cmd_stat(int argc, const char **argv, const char *prefix);
+extern int cmd_top(int argc, const char **argv, const char *prefix);
#endif
diff --git a/Documentation/perf_counter/command-list.txt b/Documentation/perf_counter/command-list.txt
index 52455d46bfb..d15210aa0ca 100644
--- a/Documentation/perf_counter/command-list.txt
+++ b/Documentation/perf_counter/command-list.txt
@@ -1,5 +1,6 @@
# List of known perf commands.
# command name category [deprecated] [common]
-perf-top mainporcelain common
+perf-record mainporcelain common
perf-stat mainporcelain common
+perf-top mainporcelain common
diff --git a/Documentation/perf_counter/perf.c b/Documentation/perf_counter/perf.c
index ff8658f2a2f..e849dd66b5e 100644
--- a/Documentation/perf_counter/perf.c
+++ b/Documentation/perf_counter/perf.c
@@ -248,8 +248,9 @@ static void handle_internal_command(int argc, const char **argv)
{
const char *cmd = argv[0];
static struct cmd_struct commands[] = {
- { "top", cmd_top, 0 },
+ { "record", cmd_record, 0 },
{ "stat", cmd_stat, 0 },
+ { "top", cmd_top, 0 },
};
int i;
static const char ext[] = STRIP_EXTENSION;