aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xentrace
diff options
context:
space:
mode:
Diffstat (limited to 'tools/xentrace')
-rw-r--r--tools/xentrace/xentrace.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/tools/xentrace/xentrace.c b/tools/xentrace/xentrace.c
index cce5469c47..db652a2283 100644
--- a/tools/xentrace/xentrace.c
+++ b/tools/xentrace/xentrace.c
@@ -58,7 +58,8 @@ typedef struct settings_st {
unsigned long timeout;
unsigned long memory_buffer;
uint8_t discard:1,
- disable_tracing:1;
+ disable_tracing:1,
+ start_disabled:1;
} settings_t;
struct t_struct {
@@ -659,6 +660,10 @@ static int monitor_tbufs(void)
/* setup access to trace buffers */
get_tbufs(&tbufs_mfn, &tinfo_size);
+
+ if ( opts.start_disabled )
+ disable_tbufs();
+
tbufs = map_tbufs(tbufs_mfn, num, tinfo_size);
size = tbufs->t_info->tbuf_size * XC_PAGE_SIZE;
@@ -791,6 +796,9 @@ static void usage(void)
" it exits. Selecting this option will tell it to\n" \
" keep tracing on. Traces will be collected in\n" \
" Xen's trace buffers until they become full.\n" \
+" -X --start-disabled Setup trace buffers and listen, but don't enable\n" \
+" tracing. (Useful if tracing will be enabled by\n" \
+" else.)\n" \
" -T --time-interval=s Run xentrace for s seconds and quit.\n" \
" -?, --help Show this message\n" \
" -V, --version Print program version\n" \
@@ -914,12 +922,13 @@ static void parse_args(int argc, char **argv)
{ "memory-buffer", required_argument, 0, 'M' },
{ "discard-buffers", no_argument, 0, 'D' },
{ "dont-disable-tracing", no_argument, 0, 'x' },
+ { "start-disabled", no_argument, 0, 'X' },
{ "help", no_argument, 0, '?' },
{ "version", no_argument, 0, 'V' },
{ 0, 0, 0, 0 }
};
- while ( (option = getopt_long(argc, argv, "t:s:c:e:S:r:T:M:Dx?V",
+ while ( (option = getopt_long(argc, argv, "t:s:c:e:S:r:T:M:DxX?V",
long_options, NULL)) != -1)
{
switch ( option )
@@ -957,6 +966,10 @@ static void parse_args(int argc, char **argv)
opts.disable_tracing = 0;
break;
+ case 'X': /* Start disabled */
+ opts.start_disabled = 1;
+ break;
+
case 'T':
opts.timeout = argtol(optarg, 0);
break;
@@ -993,6 +1006,7 @@ int main(int argc, char **argv)
opts.cpu_mask = 0;
opts.disk_rsvd = 0;
opts.disable_tracing = 1;
+ opts.start_disabled = 0;
opts.timeout = 0;
parse_args(argc, argv);