# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1271179150 -3600
# Node ID b4fce8f4ec378b6ed508caa58b3e7e12e8e93033
# Parent e2ec5cd8b3967a40c8fc83460959b5bc2b9b4ffb
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@xxxxxxxxxxxxx>
---
tools/xentrace/xentrace.c | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
diff -r e2ec5cd8b396 -r b4fce8f4ec37 tools/xentrace/xentrace.c
--- a/tools/xentrace/xentrace.c Tue Apr 13 18:18:36 2010 +0100
+++ b/tools/xentrace/xentrace.c Tue Apr 13 18:19:10 2010 +0100
@@ -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 **
{ "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 )
@@ -955,6 +964,10 @@ static void parse_args(int argc, char **
case 'x': /* Don't disable tracing */
opts.disable_tracing = 0;
+ break;
+
+ case 'X': /* Start disabled */
+ opts.start_disabled = 1;
break;
case 'T':
@@ -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);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|