Merge branch 'perf/rename' into perf/core
Merge reason: This is an older commit under testing that was not pushed yet - merge it. Also fix up the merge in command-list.txt. Signed-off-by: Ingo Molnar <mingo@elte.hu> Acked-by: Tom Zanussi <tzanussi@gmail.com>
This commit is contained in:
Коммит
b3d006c0e7
|
@ -1,19 +1,19 @@
|
|||
perf-trace-perl(1)
|
||||
perf-script-perl(1)
|
||||
==================
|
||||
|
||||
NAME
|
||||
----
|
||||
perf-trace-perl - Process trace data with a Perl script
|
||||
perf-script-perl - Process trace data with a Perl script
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'perf trace' [-s [Perl]:script[.pl] ]
|
||||
'perf script' [-s [Perl]:script[.pl] ]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
This perf trace option is used to process perf trace data using perf's
|
||||
This perf script option is used to process perf script data using perf's
|
||||
built-in Perl interpreter. It reads and processes the input file and
|
||||
displays the results of the trace analysis implemented in the given
|
||||
Perl script, if any.
|
||||
|
@ -21,7 +21,7 @@ Perl script, if any.
|
|||
STARTER SCRIPTS
|
||||
---------------
|
||||
|
||||
You can avoid reading the rest of this document by running 'perf trace
|
||||
You can avoid reading the rest of this document by running 'perf script
|
||||
-g perl' in the same directory as an existing perf.data trace file.
|
||||
That will generate a starter script containing a handler for each of
|
||||
the event types in the trace file; it simply prints every available
|
||||
|
@ -30,13 +30,13 @@ field for each event in the trace file.
|
|||
You can also look at the existing scripts in
|
||||
~/libexec/perf-core/scripts/perl for typical examples showing how to
|
||||
do basic things like aggregate event data, print results, etc. Also,
|
||||
the check-perf-trace.pl script, while not interesting for its results,
|
||||
the check-perf-script.pl script, while not interesting for its results,
|
||||
attempts to exercise all of the main scripting features.
|
||||
|
||||
EVENT HANDLERS
|
||||
--------------
|
||||
|
||||
When perf trace is invoked using a trace script, a user-defined
|
||||
When perf script is invoked using a trace script, a user-defined
|
||||
'handler function' is called for each event in the trace. If there's
|
||||
no handler function defined for a given event type, the event is
|
||||
ignored (or passed to a 'trace_handled' function, see below) and the
|
||||
|
@ -112,13 +112,13 @@ write a useful trace script. The sections below cover the rest.
|
|||
SCRIPT LAYOUT
|
||||
-------------
|
||||
|
||||
Every perf trace Perl script should start by setting up a Perl module
|
||||
Every perf script Perl script should start by setting up a Perl module
|
||||
search path and 'use'ing a few support modules (see module
|
||||
descriptions below):
|
||||
|
||||
----
|
||||
use lib "$ENV{'PERF_EXEC_PATH'}/scripts/perl/Perf-Trace-Util/lib";
|
||||
use lib "./Perf-Trace-Util/lib";
|
||||
use lib "$ENV{'PERF_EXEC_PATH'}/scripts/perl/perf-script-Util/lib";
|
||||
use lib "./perf-script-Util/lib";
|
||||
use Perf::Trace::Core;
|
||||
use Perf::Trace::Context;
|
||||
use Perf::Trace::Util;
|
||||
|
@ -162,7 +162,7 @@ sub trace_unhandled
|
|||
----
|
||||
|
||||
The remaining sections provide descriptions of each of the available
|
||||
built-in perf trace Perl modules and their associated functions.
|
||||
built-in perf script Perl modules and their associated functions.
|
||||
|
||||
AVAILABLE MODULES AND FUNCTIONS
|
||||
-------------------------------
|
||||
|
@ -170,7 +170,7 @@ AVAILABLE MODULES AND FUNCTIONS
|
|||
The following sections describe the functions and variables available
|
||||
via the various Perf::Trace::* Perl modules. To use the functions and
|
||||
variables from the given module, add the corresponding 'use
|
||||
Perf::Trace::XXX' line to your perf trace script.
|
||||
Perf::Trace::XXX' line to your perf script script.
|
||||
|
||||
Perf::Trace::Core Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -204,7 +204,7 @@ argument.
|
|||
Perf::Trace::Util Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Various utility functions for use with perf trace:
|
||||
Various utility functions for use with perf script:
|
||||
|
||||
nsecs($secs, $nsecs) - returns total nsecs given secs/nsecs pair
|
||||
nsecs_secs($nsecs) - returns whole secs portion given nsecs
|
||||
|
@ -214,4 +214,4 @@ Various utility functions for use with perf trace:
|
|||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkperf:perf-trace[1]
|
||||
linkperf:perf-script[1]
|
|
@ -1,19 +1,19 @@
|
|||
perf-trace-python(1)
|
||||
perf-script-python(1)
|
||||
====================
|
||||
|
||||
NAME
|
||||
----
|
||||
perf-trace-python - Process trace data with a Python script
|
||||
perf-script-python - Process trace data with a Python script
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'perf trace' [-s [Python]:script[.py] ]
|
||||
'perf script' [-s [Python]:script[.py] ]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
This perf trace option is used to process perf trace data using perf's
|
||||
This perf script option is used to process perf script data using perf's
|
||||
built-in Python interpreter. It reads and processes the input file and
|
||||
displays the results of the trace analysis implemented in the given
|
||||
Python script, if any.
|
||||
|
@ -23,15 +23,15 @@ A QUICK EXAMPLE
|
|||
|
||||
This section shows the process, start to finish, of creating a working
|
||||
Python script that aggregates and extracts useful information from a
|
||||
raw perf trace stream. You can avoid reading the rest of this
|
||||
raw perf script stream. You can avoid reading the rest of this
|
||||
document if an example is enough for you; the rest of the document
|
||||
provides more details on each step and lists the library functions
|
||||
available to script writers.
|
||||
|
||||
This example actually details the steps that were used to create the
|
||||
'syscall-counts' script you see when you list the available perf trace
|
||||
scripts via 'perf trace -l'. As such, this script also shows how to
|
||||
integrate your script into the list of general-purpose 'perf trace'
|
||||
'syscall-counts' script you see when you list the available perf script
|
||||
scripts via 'perf script -l'. As such, this script also shows how to
|
||||
integrate your script into the list of general-purpose 'perf script'
|
||||
scripts listed by that command.
|
||||
|
||||
The syscall-counts script is a simple script, but demonstrates all the
|
||||
|
@ -105,31 +105,31 @@ That single stream will be recorded in a file in the current directory
|
|||
called perf.data.
|
||||
|
||||
Once we have a perf.data file containing our data, we can use the -g
|
||||
'perf trace' option to generate a Python script that will contain a
|
||||
'perf script' option to generate a Python script that will contain a
|
||||
callback handler for each event type found in the perf.data trace
|
||||
stream (for more details, see the STARTER SCRIPTS section).
|
||||
|
||||
----
|
||||
# perf trace -g python
|
||||
generated Python script: perf-trace.py
|
||||
# perf script -g python
|
||||
generated Python script: perf-script.py
|
||||
|
||||
The output file created also in the current directory is named
|
||||
perf-trace.py. Here's the file in its entirety:
|
||||
perf-script.py. Here's the file in its entirety:
|
||||
|
||||
# perf trace event handlers, generated by perf trace -g python
|
||||
# perf script event handlers, generated by perf script -g python
|
||||
# Licensed under the terms of the GNU GPL License version 2
|
||||
|
||||
# The common_* event handler fields are the most useful fields common to
|
||||
# all events. They don't necessarily correspond to the 'common_*' fields
|
||||
# in the format files. Those fields not available as handler params can
|
||||
# be retrieved using Python functions of the form common_*(context).
|
||||
# See the perf-trace-python Documentation for the list of available functions.
|
||||
# See the perf-script-python Documentation for the list of available functions.
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
|
||||
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
|
||||
'/scripts/python/perf-script-Util/lib/Perf/Trace')
|
||||
|
||||
from perf_trace_context import *
|
||||
from Core import *
|
||||
|
@ -160,7 +160,7 @@ def print_header(event_name, cpu, secs, nsecs, pid, comm):
|
|||
----
|
||||
|
||||
At the top is a comment block followed by some import statements and a
|
||||
path append which every perf trace script should include.
|
||||
path append which every perf script script should include.
|
||||
|
||||
Following that are a couple generated functions, trace_begin() and
|
||||
trace_end(), which are called at the beginning and the end of the
|
||||
|
@ -189,8 +189,8 @@ simply a utility function used for that purpose. Let's rename the
|
|||
script and run it to see the default output:
|
||||
|
||||
----
|
||||
# mv perf-trace.py syscall-counts.py
|
||||
# perf trace -s syscall-counts.py
|
||||
# mv perf-script.py syscall-counts.py
|
||||
# perf script -s syscall-counts.py
|
||||
|
||||
raw_syscalls__sys_enter 1 00840.847582083 7506 perf id=1, args=
|
||||
raw_syscalls__sys_enter 1 00840.847595764 7506 perf id=1, args=
|
||||
|
@ -216,7 +216,7 @@ import os
|
|||
import sys
|
||||
|
||||
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
|
||||
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
|
||||
'/scripts/python/perf-script-Util/lib/Perf/Trace')
|
||||
|
||||
from perf_trace_context import *
|
||||
from Core import *
|
||||
|
@ -279,7 +279,7 @@ import os
|
|||
import sys
|
||||
|
||||
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
|
||||
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
|
||||
'/scripts/python/perf-script-Util/lib/Perf/Trace')
|
||||
|
||||
from perf_trace_context import *
|
||||
from Core import *
|
||||
|
@ -315,7 +315,7 @@ def print_syscall_totals():
|
|||
|
||||
The script can be run just as before:
|
||||
|
||||
# perf trace -s syscall-counts.py
|
||||
# perf script -s syscall-counts.py
|
||||
|
||||
So those are the essential steps in writing and running a script. The
|
||||
process can be generalized to any tracepoint or set of tracepoints
|
||||
|
@ -324,17 +324,17 @@ interested in by looking at the list of available events shown by
|
|||
'perf list' and/or look in /sys/kernel/debug/tracing events for
|
||||
detailed event and field info, record the corresponding trace data
|
||||
using 'perf record', passing it the list of interesting events,
|
||||
generate a skeleton script using 'perf trace -g python' and modify the
|
||||
generate a skeleton script using 'perf script -g python' and modify the
|
||||
code to aggregate and display it for your particular needs.
|
||||
|
||||
After you've done that you may end up with a general-purpose script
|
||||
that you want to keep around and have available for future use. By
|
||||
writing a couple of very simple shell scripts and putting them in the
|
||||
right place, you can have your script listed alongside the other
|
||||
scripts listed by the 'perf trace -l' command e.g.:
|
||||
scripts listed by the 'perf script -l' command e.g.:
|
||||
|
||||
----
|
||||
root@tropicana:~# perf trace -l
|
||||
root@tropicana:~# perf script -l
|
||||
List of available trace scripts:
|
||||
workqueue-stats workqueue stats (ins/exe/create/destroy)
|
||||
wakeup-latency system-wide min/max/avg wakeup latency
|
||||
|
@ -365,14 +365,14 @@ perf record -a -e raw_syscalls:sys_enter
|
|||
The 'report' script is also a shell script with the same base name as
|
||||
your script, but with -report appended. It should also be located in
|
||||
the perf/scripts/python/bin directory. In that script, you write the
|
||||
'perf trace -s' command-line needed for running your script:
|
||||
'perf script -s' command-line needed for running your script:
|
||||
|
||||
----
|
||||
# cat kernel-source/tools/perf/scripts/python/bin/syscall-counts-report
|
||||
|
||||
#!/bin/bash
|
||||
# description: system-wide syscall counts
|
||||
perf trace -s ~/libexec/perf-core/scripts/python/syscall-counts.py
|
||||
perf script -s ~/libexec/perf-core/scripts/python/syscall-counts.py
|
||||
----
|
||||
|
||||
Note that the location of the Python script given in the shell script
|
||||
|
@ -390,17 +390,17 @@ total 32
|
|||
drwxr-xr-x 4 trz trz 4096 2010-01-26 22:30 .
|
||||
drwxr-xr-x 4 trz trz 4096 2010-01-26 22:29 ..
|
||||
drwxr-xr-x 2 trz trz 4096 2010-01-26 22:29 bin
|
||||
-rw-r--r-- 1 trz trz 2548 2010-01-26 22:29 check-perf-trace.py
|
||||
drwxr-xr-x 3 trz trz 4096 2010-01-26 22:49 Perf-Trace-Util
|
||||
-rw-r--r-- 1 trz trz 2548 2010-01-26 22:29 check-perf-script.py
|
||||
drwxr-xr-x 3 trz trz 4096 2010-01-26 22:49 perf-script-Util
|
||||
-rw-r--r-- 1 trz trz 1462 2010-01-26 22:30 syscall-counts.py
|
||||
----
|
||||
|
||||
Once you've done that (don't forget to do a new 'make install',
|
||||
otherwise your script won't show up at run-time), 'perf trace -l'
|
||||
otherwise your script won't show up at run-time), 'perf script -l'
|
||||
should show a new entry for your script:
|
||||
|
||||
----
|
||||
root@tropicana:~# perf trace -l
|
||||
root@tropicana:~# perf script -l
|
||||
List of available trace scripts:
|
||||
workqueue-stats workqueue stats (ins/exe/create/destroy)
|
||||
wakeup-latency system-wide min/max/avg wakeup latency
|
||||
|
@ -409,19 +409,19 @@ List of available trace scripts:
|
|||
syscall-counts system-wide syscall counts
|
||||
----
|
||||
|
||||
You can now perform the record step via 'perf trace record':
|
||||
You can now perform the record step via 'perf script record':
|
||||
|
||||
# perf trace record syscall-counts
|
||||
# perf script record syscall-counts
|
||||
|
||||
and display the output using 'perf trace report':
|
||||
and display the output using 'perf script report':
|
||||
|
||||
# perf trace report syscall-counts
|
||||
# perf script report syscall-counts
|
||||
|
||||
STARTER SCRIPTS
|
||||
---------------
|
||||
|
||||
You can quickly get started writing a script for a particular set of
|
||||
trace data by generating a skeleton script using 'perf trace -g
|
||||
trace data by generating a skeleton script using 'perf script -g
|
||||
python' in the same directory as an existing perf.data trace file.
|
||||
That will generate a starter script containing a handler for each of
|
||||
the event types in the trace file; it simply prints every available
|
||||
|
@ -430,13 +430,13 @@ field for each event in the trace file.
|
|||
You can also look at the existing scripts in
|
||||
~/libexec/perf-core/scripts/python for typical examples showing how to
|
||||
do basic things like aggregate event data, print results, etc. Also,
|
||||
the check-perf-trace.py script, while not interesting for its results,
|
||||
the check-perf-script.py script, while not interesting for its results,
|
||||
attempts to exercise all of the main scripting features.
|
||||
|
||||
EVENT HANDLERS
|
||||
--------------
|
||||
|
||||
When perf trace is invoked using a trace script, a user-defined
|
||||
When perf script is invoked using a trace script, a user-defined
|
||||
'handler function' is called for each event in the trace. If there's
|
||||
no handler function defined for a given event type, the event is
|
||||
ignored (or passed to a 'trace_handled' function, see below) and the
|
||||
|
@ -510,7 +510,7 @@ write a useful trace script. The sections below cover the rest.
|
|||
SCRIPT LAYOUT
|
||||
-------------
|
||||
|
||||
Every perf trace Python script should start by setting up a Python
|
||||
Every perf script Python script should start by setting up a Python
|
||||
module search path and 'import'ing a few support modules (see module
|
||||
descriptions below):
|
||||
|
||||
|
@ -519,7 +519,7 @@ descriptions below):
|
|||
import sys
|
||||
|
||||
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
|
||||
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
|
||||
'/scripts/python/perf-script-Util/lib/Perf/Trace')
|
||||
|
||||
from perf_trace_context import *
|
||||
from Core import *
|
||||
|
@ -559,15 +559,15 @@ def trace_unhandled(event_name, context, common_cpu, common_secs,
|
|||
----
|
||||
|
||||
The remaining sections provide descriptions of each of the available
|
||||
built-in perf trace Python modules and their associated functions.
|
||||
built-in perf script Python modules and their associated functions.
|
||||
|
||||
AVAILABLE MODULES AND FUNCTIONS
|
||||
-------------------------------
|
||||
|
||||
The following sections describe the functions and variables available
|
||||
via the various perf trace Python modules. To use the functions and
|
||||
via the various perf script Python modules. To use the functions and
|
||||
variables from the given module, add the corresponding 'from XXXX
|
||||
import' line to your perf trace script.
|
||||
import' line to your perf script script.
|
||||
|
||||
Core.py Module
|
||||
~~~~~~~~~~~~~~
|
||||
|
@ -610,7 +610,7 @@ argument.
|
|||
Util.py Module
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Various utility functions for use with perf trace:
|
||||
Various utility functions for use with perf script:
|
||||
|
||||
nsecs(secs, nsecs) - returns total nsecs given secs/nsecs pair
|
||||
nsecs_secs(nsecs) - returns whole secs portion given nsecs
|
||||
|
@ -620,4 +620,4 @@ Various utility functions for use with perf trace:
|
|||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkperf:perf-trace[1]
|
||||
linkperf:perf-script[1]
|
|
@ -1,71 +1,71 @@
|
|||
perf-trace(1)
|
||||
perf-script(1)
|
||||
=============
|
||||
|
||||
NAME
|
||||
----
|
||||
perf-trace - Read perf.data (created by perf record) and display trace output
|
||||
perf-script - Read perf.data (created by perf record) and display trace output
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'perf trace' [<options>]
|
||||
'perf trace' [<options>] record <script> [<record-options>] <command>
|
||||
'perf trace' [<options>] report <script> [script-args]
|
||||
'perf trace' [<options>] <script> <required-script-args> [<record-options>] <command>
|
||||
'perf trace' [<options>] <top-script> [script-args]
|
||||
'perf script' [<options>]
|
||||
'perf script' [<options>] record <script> [<record-options>] <command>
|
||||
'perf script' [<options>] report <script> [script-args]
|
||||
'perf script' [<options>] <script> <required-script-args> [<record-options>] <command>
|
||||
'perf script' [<options>] <top-script> [script-args]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This command reads the input file and displays the trace recorded.
|
||||
|
||||
There are several variants of perf trace:
|
||||
There are several variants of perf script:
|
||||
|
||||
'perf trace' to see a detailed trace of the workload that was
|
||||
'perf script' to see a detailed trace of the workload that was
|
||||
recorded.
|
||||
|
||||
You can also run a set of pre-canned scripts that aggregate and
|
||||
summarize the raw trace data in various ways (the list of scripts is
|
||||
available via 'perf trace -l'). The following variants allow you to
|
||||
available via 'perf script -l'). The following variants allow you to
|
||||
record and run those scripts:
|
||||
|
||||
'perf trace record <script> <command>' to record the events required
|
||||
for 'perf trace report'. <script> is the name displayed in the
|
||||
output of 'perf trace --list' i.e. the actual script name minus any
|
||||
'perf script record <script> <command>' to record the events required
|
||||
for 'perf script report'. <script> is the name displayed in the
|
||||
output of 'perf script --list' i.e. the actual script name minus any
|
||||
language extension. If <command> is not specified, the events are
|
||||
recorded using the -a (system-wide) 'perf record' option.
|
||||
|
||||
'perf trace report <script> [args]' to run and display the results
|
||||
'perf script report <script> [args]' to run and display the results
|
||||
of <script>. <script> is the name displayed in the output of 'perf
|
||||
trace --list' i.e. the actual script name minus any language
|
||||
extension. The perf.data output from a previous run of 'perf trace
|
||||
extension. The perf.data output from a previous run of 'perf script
|
||||
record <script>' is used and should be present for this command to
|
||||
succeed. [args] refers to the (mainly optional) args expected by
|
||||
the script.
|
||||
|
||||
'perf trace <script> <required-script-args> <command>' to both
|
||||
'perf script <script> <required-script-args> <command>' to both
|
||||
record the events required for <script> and to run the <script>
|
||||
using 'live-mode' i.e. without writing anything to disk. <script>
|
||||
is the name displayed in the output of 'perf trace --list' i.e. the
|
||||
is the name displayed in the output of 'perf script --list' i.e. the
|
||||
actual script name minus any language extension. If <command> is
|
||||
not specified, the events are recorded using the -a (system-wide)
|
||||
'perf record' option. If <script> has any required args, they
|
||||
should be specified before <command>. This mode doesn't allow for
|
||||
optional script args to be specified; if optional script args are
|
||||
desired, they can be specified using separate 'perf trace record'
|
||||
and 'perf trace report' commands, with the stdout of the record step
|
||||
desired, they can be specified using separate 'perf script record'
|
||||
and 'perf script report' commands, with the stdout of the record step
|
||||
piped to the stdin of the report script, using the '-o -' and '-i -'
|
||||
options of the corresponding commands.
|
||||
|
||||
'perf trace <top-script>' to both record the events required for
|
||||
'perf script <top-script>' to both record the events required for
|
||||
<top-script> and to run the <top-script> using 'live-mode'
|
||||
i.e. without writing anything to disk. <top-script> is the name
|
||||
displayed in the output of 'perf trace --list' i.e. the actual
|
||||
displayed in the output of 'perf script --list' i.e. the actual
|
||||
script name minus any language extension; a <top-script> is defined
|
||||
as any script name ending with the string 'top'.
|
||||
|
||||
[<record-options>] can be passed to the record steps of 'perf trace
|
||||
[<record-options>] can be passed to the record steps of 'perf script
|
||||
record' and 'live-mode' variants; this isn't possible however for
|
||||
<top-script> 'live-mode' or 'perf trace report' variants.
|
||||
<top-script> 'live-mode' or 'perf script report' variants.
|
||||
|
||||
See the 'SEE ALSO' section for links to language-specific
|
||||
information on how to write and run your own trace scripts.
|
||||
|
@ -76,7 +76,7 @@ OPTIONS
|
|||
Any command you can specify in a shell.
|
||||
|
||||
-D::
|
||||
--dump-raw-trace=::
|
||||
--dump-raw-script=::
|
||||
Display verbose dump of the trace data.
|
||||
|
||||
-L::
|
||||
|
@ -95,7 +95,7 @@ OPTIONS
|
|||
|
||||
-g::
|
||||
--gen-script=::
|
||||
Generate perf-trace.[ext] starter script for given language,
|
||||
Generate perf-script.[ext] starter script for given language,
|
||||
using current perf.data.
|
||||
|
||||
-a::
|
||||
|
@ -107,5 +107,5 @@ OPTIONS
|
|||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkperf:perf-record[1], linkperf:perf-trace-perl[1],
|
||||
linkperf:perf-trace-python[1]
|
||||
linkperf:perf-record[1], linkperf:perf-script-perl[1],
|
||||
linkperf:perf-script-python[1]
|
|
@ -495,7 +495,7 @@ BUILTIN_OBJS += $(OUTPUT)builtin-report.o
|
|||
BUILTIN_OBJS += $(OUTPUT)builtin-stat.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-timechart.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-top.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-trace.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-script.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-probe.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-kmem.o
|
||||
BUILTIN_OBJS += $(OUTPUT)builtin-lock.o
|
||||
|
|
|
@ -982,9 +982,9 @@ int cmd_lock(int argc, const char **argv, const char *prefix __used)
|
|||
usage_with_options(report_usage, report_options);
|
||||
}
|
||||
__cmd_report();
|
||||
} else if (!strcmp(argv[0], "trace")) {
|
||||
/* Aliased to 'perf trace' */
|
||||
return cmd_trace(argc, argv, prefix);
|
||||
} else if (!strcmp(argv[0], "script")) {
|
||||
/* Aliased to 'perf script' */
|
||||
return cmd_script(argc, argv, prefix);
|
||||
} else if (!strcmp(argv[0], "info")) {
|
||||
if (argc) {
|
||||
argc = parse_options(argc, argv,
|
||||
|
|
|
@ -1888,10 +1888,10 @@ int cmd_sched(int argc, const char **argv, const char *prefix __used)
|
|||
usage_with_options(sched_usage, sched_options);
|
||||
|
||||
/*
|
||||
* Aliased to 'perf trace' for now:
|
||||
* Aliased to 'perf script' for now:
|
||||
*/
|
||||
if (!strcmp(argv[0], "trace"))
|
||||
return cmd_trace(argc, argv, prefix);
|
||||
if (!strcmp(argv[0], "script"))
|
||||
return cmd_script(argc, argv, prefix);
|
||||
|
||||
symbol__init();
|
||||
if (!strncmp(argv[0], "rec", 3)) {
|
||||
|
|
|
@ -56,7 +56,7 @@ static void setup_scripting(void)
|
|||
|
||||
static int cleanup_scripting(void)
|
||||
{
|
||||
pr_debug("\nperf trace script stopped\n");
|
||||
pr_debug("\nperf script stopped\n");
|
||||
|
||||
return scripting_ops->stop_script();
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ static void sig_handler(int sig __unused)
|
|||
session_done = 1;
|
||||
}
|
||||
|
||||
static int __cmd_trace(struct perf_session *session)
|
||||
static int __cmd_script(struct perf_session *session)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -247,7 +247,7 @@ static void list_available_languages(void)
|
|||
|
||||
fprintf(stderr, "\n");
|
||||
fprintf(stderr, "Scripting language extensions (used in "
|
||||
"perf trace -s [spec:]script.[spec]):\n\n");
|
||||
"perf script -s [spec:]script.[spec]):\n\n");
|
||||
|
||||
list_for_each_entry(s, &script_specs, node)
|
||||
fprintf(stderr, " %-42s [%s]\n", s->spec, s->ops->name);
|
||||
|
@ -586,12 +586,12 @@ out:
|
|||
return n_args;
|
||||
}
|
||||
|
||||
static const char * const trace_usage[] = {
|
||||
"perf trace [<options>]",
|
||||
"perf trace [<options>] record <script> [<record-options>] <command>",
|
||||
"perf trace [<options>] report <script> [script-args]",
|
||||
"perf trace [<options>] <script> [<record-options>] <command>",
|
||||
"perf trace [<options>] <top-script> [script-args]",
|
||||
static const char * const script_usage[] = {
|
||||
"perf script [<options>]",
|
||||
"perf script [<options>] record <script> [<record-options>] <command>",
|
||||
"perf script [<options>] report <script> [script-args]",
|
||||
"perf script [<options>] <script> [<record-options>] <command>",
|
||||
"perf script [<options>] <top-script> [script-args]",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -608,7 +608,7 @@ static const struct option options[] = {
|
|||
"script file name (lang:script name, script name, or *)",
|
||||
parse_scriptname),
|
||||
OPT_STRING('g', "gen-script", &generate_script_lang, "lang",
|
||||
"generate perf-trace.xx script in specified language"),
|
||||
"generate perf-script.xx script in specified language"),
|
||||
OPT_STRING('i', "input", &input_name, "file",
|
||||
"input file name"),
|
||||
OPT_BOOLEAN('d', "debug-mode", &debug_mode,
|
||||
|
@ -631,7 +631,7 @@ static bool have_cmd(int argc, const char **argv)
|
|||
return argc != 0;
|
||||
}
|
||||
|
||||
int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
||||
int cmd_script(int argc, const char **argv, const char *prefix __used)
|
||||
{
|
||||
char *rec_script_path = NULL;
|
||||
char *rep_script_path = NULL;
|
||||
|
@ -643,7 +643,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
|||
|
||||
setup_scripting();
|
||||
|
||||
argc = parse_options(argc, argv, options, trace_usage,
|
||||
argc = parse_options(argc, argv, options, script_usage,
|
||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||
|
||||
if (argc > 1 && !strncmp(argv[0], "rec", strlen("rec"))) {
|
||||
|
@ -657,7 +657,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
|||
if (!rep_script_path) {
|
||||
fprintf(stderr,
|
||||
"Please specify a valid report script"
|
||||
"(see 'perf trace -l' for listing)\n");
|
||||
"(see 'perf script -l' for listing)\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@ -675,8 +675,8 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
|||
|
||||
if (!rec_script_path && !rep_script_path) {
|
||||
fprintf(stderr, " Couldn't find script %s\n\n See perf"
|
||||
" trace -l for available scripts.\n", argv[0]);
|
||||
usage_with_options(trace_usage, options);
|
||||
" script -l for available scripts.\n", argv[0]);
|
||||
usage_with_options(script_usage, options);
|
||||
}
|
||||
|
||||
if (is_top_script(argv[0])) {
|
||||
|
@ -688,9 +688,9 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
|||
rec_args = (argc - 1) - rep_args;
|
||||
if (rec_args < 0) {
|
||||
fprintf(stderr, " %s script requires options."
|
||||
"\n\n See perf trace -l for available "
|
||||
"\n\n See perf script -l for available "
|
||||
"scripts and options.\n", argv[0]);
|
||||
usage_with_options(trace_usage, options);
|
||||
usage_with_options(script_usage, options);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -823,7 +823,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
|||
return -1;
|
||||
}
|
||||
|
||||
err = scripting_ops->generate_script("perf-trace");
|
||||
err = scripting_ops->generate_script("perf-script");
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -831,10 +831,10 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
|||
err = scripting_ops->start_script(script_name, argc, argv);
|
||||
if (err)
|
||||
goto out;
|
||||
pr_debug("perf trace started with script %s\n\n", script_name);
|
||||
pr_debug("perf script started with script %s\n\n", script_name);
|
||||
}
|
||||
|
||||
err = __cmd_trace(session);
|
||||
err = __cmd_script(session);
|
||||
|
||||
perf_session__delete(session);
|
||||
cleanup_scripting();
|
|
@ -27,7 +27,7 @@ extern int cmd_report(int argc, const char **argv, const char *prefix);
|
|||
extern int cmd_stat(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_timechart(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_top(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_trace(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_script(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_version(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_probe(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_kmem(int argc, const char **argv, const char *prefix);
|
||||
|
|
|
@ -16,7 +16,7 @@ perf-report mainporcelain common
|
|||
perf-stat mainporcelain common
|
||||
perf-timechart mainporcelain common
|
||||
perf-top mainporcelain common
|
||||
perf-trace mainporcelain common
|
||||
perf-script mainporcelain common
|
||||
perf-probe mainporcelain common
|
||||
perf-kmem mainporcelain common
|
||||
perf-lock mainporcelain common
|
||||
|
|
|
@ -323,7 +323,7 @@ static void handle_internal_command(int argc, const char **argv)
|
|||
{ "top", cmd_top, 0 },
|
||||
{ "annotate", cmd_annotate, 0 },
|
||||
{ "version", cmd_version, 0 },
|
||||
{ "trace", cmd_trace, 0 },
|
||||
{ "script", cmd_script, 0 },
|
||||
{ "sched", cmd_sched, 0 },
|
||||
{ "probe", cmd_probe, 0 },
|
||||
{ "kmem", cmd_kmem, 0 },
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Context.c. Python interfaces for perf trace.
|
||||
* Context.c. Python interfaces for perf script.
|
||||
*
|
||||
* Copyright (C) 2010 Tom Zanussi <tzanussi@gmail.com>
|
||||
*
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* trace-event-perl. Feed perf trace events to an embedded Perl interpreter.
|
||||
* trace-event-perl. Feed perf script events to an embedded Perl interpreter.
|
||||
*
|
||||
* Copyright (C) 2009 Tom Zanussi <tzanussi@gmail.com>
|
||||
*
|
||||
|
@ -411,8 +411,8 @@ static int perl_generate_script(const char *outfile)
|
|||
return -1;
|
||||
}
|
||||
|
||||
fprintf(ofp, "# perf trace event handlers, "
|
||||
"generated by perf trace -g perl\n");
|
||||
fprintf(ofp, "# perf script event handlers, "
|
||||
"generated by perf script -g perl\n");
|
||||
|
||||
fprintf(ofp, "# Licensed under the terms of the GNU GPL"
|
||||
" License version 2\n\n");
|
||||
|
|
|
@ -442,8 +442,8 @@ static int python_generate_script(const char *outfile)
|
|||
fprintf(stderr, "couldn't open %s\n", fname);
|
||||
return -1;
|
||||
}
|
||||
fprintf(ofp, "# perf trace event handlers, "
|
||||
"generated by perf trace -g python\n");
|
||||
fprintf(ofp, "# perf script event handlers, "
|
||||
"generated by perf script -g python\n");
|
||||
|
||||
fprintf(ofp, "# Licensed under the terms of the GNU GPL"
|
||||
" License version 2\n\n");
|
||||
|
|
Загрузка…
Ссылка в новой задаче