aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xentrace
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-04-13 18:19:10 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-04-13 18:19:10 +0100
commit70d3f227c6469bd98a5227a4da79638c31b2abe2 (patch)
tree857d8967b62efc9fe379a84600265dead836a50d /tools/xentrace
parent778757601420fe15afa7eb774dbfb143f2d78a4e (diff)
downloadxen-70d3f227c6469bd98a5227a4da79638c31b2abe2.tar.gz
xen-70d3f227c6469bd98a5227a4da79638c31b2abe2.tar.bz2
xen-70d3f227c6469bd98a5227a4da79638c31b2abe2.zip
xentrace: Add an option not to enable tracing
Add an option that will set up the buffers and listen for updates, but will not enable tracing. This is useful if you have hacks in Xen to enable tracing at key points (for example, debugging a shadow bug). Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
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);