diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2016-03-22 13:27:08 -0400 |
---|---|---|
committer | John Kacur <jkacur@redhat.com> | 2016-03-24 14:57:51 +0100 |
commit | 39889fd0b2eb562c346ebb3ada8b76bdf8f82089 (patch) | |
tree | a62d588937aff32e4a11529c081d585d36a63512 | |
parent | a638701a18992fb43507269a3b8049e06981f01c (diff) | |
download | rt-tests-39889fd0b2eb562c346ebb3ada8b76bdf8f82089.tar.gz |
cyclictest: add --tracemark option
cyclictest will only write to /sys/kernel/debug/tracing/trace_maker
if it's also setup to do tracing. This conflicts with
running cyclictest under trace-cmd.
The --tracemark option tells cyclictest to write to the
trace_marker file even when it's not doing tracing.
It can be used like this:
# trace-cmd record [...] cyclictest [...] -bX --tracemark --notrace
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
-rw-r--r-- | src/cyclictest/cyclictest.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c index b9571f5..4844dfa 100644 --- a/src/cyclictest/cyclictest.c +++ b/src/cyclictest/cyclictest.c @@ -202,6 +202,7 @@ static void trigger_update(struct thread_param *par, int diff, int64_t ts); static int shutdown; static int tracelimit = 0; static int notrace = 0; +static int trace_marker = 0; static int ftrace = 0; static int kernelversion; static int verbose = 0; @@ -561,6 +562,18 @@ static void debugfs_prepare(void) fileprefix = procfileprefix; } +static void enable_trace_mark(void) +{ + if (!trace_marker) + return; + + if (!tracelimit) + fatal("--tracemark requires -b\n"); + + debugfs_prepare(); + open_tracemark_fd(); +} + static void setup_tracer(void) { if (!tracelimit || notrace) @@ -1312,6 +1325,7 @@ static void display_help(int error) "-t [NUM] --threads=NUM number of threads:\n" " without NUM, threads = max_cpus\n" " without -t default = 1\n" + " --tracemark write a trace mark when -b latency is exceeded\n" "-T TRACE --tracer=TRACER set tracing function\n" " configured tracers: %s\n" "-u --unbuffered force unbuffered output for live processing\n" @@ -1453,7 +1467,7 @@ enum option_values { OPT_SYSTEM, OPT_SMP, OPT_THREADS, OPT_TRACER, OPT_TRIGGER, OPT_TRIGGER_NODES, OPT_UNBUFFERED, OPT_NUMA, OPT_VERBOSE, OPT_WAKEUP, OPT_WAKEUPRT, OPT_DBGCYCLIC, OPT_POLICY, OPT_HELP, OPT_NUMOPTS, - OPT_ALIGNED, OPT_SECALIGNED, OPT_LAPTOP, OPT_SMI, + OPT_ALIGNED, OPT_SECALIGNED, OPT_LAPTOP, OPT_SMI, OPT_TRACEMARK, }; /* Process commandline options */ @@ -1508,6 +1522,7 @@ static void process_options (int argc, char *argv[], int max_cpus) {"spike", required_argument, NULL, OPT_TRIGGER }, {"spike-nodes", required_argument, NULL, OPT_TRIGGER_NODES }, {"threads", optional_argument, NULL, OPT_THREADS }, + {"tracemark", no_argument, NULL, OPT_TRACEMARK }, {"tracer", required_argument, NULL, OPT_TRACER }, {"unbuffered", no_argument, NULL, OPT_UNBUFFERED }, {"numa", no_argument, NULL, OPT_NUMA }, @@ -1749,6 +1764,8 @@ static void process_options (int argc, char *argv[], int max_cpus) fatal("--smi is not available on your arch\n"); #endif break; + case OPT_TRACEMARK: + trace_marker = 1; break; } } @@ -2184,6 +2201,8 @@ int main(int argc, char **argv) setup_tracer(); + enable_trace_mark(); + if (check_timer()) warn("High resolution timers not available\n"); |