* [PATCH]xentrace_format doesn't work on 64 bit arch
@ 2005-11-17 22:40 Rob Gardner
2005-11-18 11:50 ` Keir Fraser
0 siblings, 1 reply; 2+ messages in thread
From: Rob Gardner @ 2005-11-17 22:40 UTC (permalink / raw)
To: xen-devel
The xentrace_format script doesn't work on x86/64. Python pads the input
structure because the first field is 32 bits and the next is 64 bits,
whereas x86-32 doesn't pad. The quick fix is to read the cpu id
separately as a 32bit value, then read the rest of the trace record.
Here is a little patch that does that. Tested on x86/32 SMP and x86/64.
Signed-off-by: Rob Gardner <rob.gardner@hp.com>
# HG changeset patch
# User rob.gardner@hp.com
# Node ID a65d04d96b04d686f29c7a0df8c829b46a957d4f
# Parent 9bf6f907b3ff0261902f06d261f76c1bd12af9f5
Change xentrace_format to handle 64 bit structure packing
diff -r 9bf6f907b3ff -r a65d04d96b04 tools/xentrace/xentrace_format
--- a/tools/xentrace/xentrace_format Wed Nov 16 10:29:52 2005
+++ b/tools/xentrace/xentrace_format Thu Nov 17 22:28:32 2005
@@ -85,7 +85,9 @@
# structure of trace record + prepended CPU id (as output by xentrace):
# CPU(I) TSC(Q) EVENT(L) D1(L) D2(L) D3(L) D4(L) D5(L)
-TRCREC = "IQLLLLLL"
+# read CPU id separately to avoid structure packing problems on 64-bit
arch.
+CPUREC = "I"
+TRCREC = "QLLLLLL"
last_tsc = [0,0,0,0,0,0,0,0]
@@ -94,11 +96,16 @@
while not interrupted:
try:
i=i+1
+ line = sys.stdin.read(struct.calcsize(CPUREC))
+ if not line:
+ break
+ cpu = struct.unpack(CPUREC, line)[0]
+
line = sys.stdin.read(struct.calcsize(TRCREC))
if not line:
break
- (cpu, tsc, event, d1, d2, d3, d4, d5) = struct.unpack(TRCREC, line)
+ (tsc, event, d1, d2, d3, d4, d5) = struct.unpack(TRCREC, line)
#tsc = (tscH<<32) | tscL
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH]xentrace_format doesn't work on 64 bit arch
2005-11-17 22:40 [PATCH]xentrace_format doesn't work on 64 bit arch Rob Gardner
@ 2005-11-18 11:50 ` Keir Fraser
0 siblings, 0 replies; 2+ messages in thread
From: Keir Fraser @ 2005-11-18 11:50 UTC (permalink / raw)
To: Rob Gardner; +Cc: xen-devel
On 17 Nov 2005, at 22:40, Rob Gardner wrote:
> The xentrace_format script doesn't work on x86/64. Python pads the
> input structure because the first field is 32 bits and the next is 64
> bits, whereas x86-32 doesn't pad. The quick fix is to read the cpu id
> separately as a 32bit value, then read the rest of the trace record.
> Here is a little patch that does that. Tested on x86/32 SMP and
> x86/64.
Your mail client has garbled the patch. Please re-send as an attachment.
-- Keir
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-11-18 11:50 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-17 22:40 [PATCH]xentrace_format doesn't work on 64 bit arch Rob Gardner
2005-11-18 11:50 ` Keir Fraser
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.