
On Mon, Oct 24, 2011 at 08:27:34PM +0200, Alon Levy wrote:
On Mon, Oct 24, 2011 at 03:37:04PM +0100, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange@redhat.com>
This change adds some systemtap/dtrace probes to the QEMU monitor client code. In particular it allows watching of all operations for a VM
* examples/systemtap/qemu-monitor.stp: Watch all monitor commands * src/Makefile.am: Passing libdir/bindir/sbindir to dtrace2systemtap.pl * src/dtrace2systemtap.pl: Accept libdir/bindir/sbindir as args and look for '# binary:' comment to mark probes against libvirtd vs libvirt.so * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_text.c: Add probes for key functions --- examples/systemtap/qemu-monitor.stp | 81 +++++++++++++++++++++++++++++++++++
diff --git a/src/dtrace2systemtap.pl b/src/dtrace2systemtap.pl index fab066b..b577eac 100755 --- a/src/dtrace2systemtap.pl +++ b/src/dtrace2systemtap.pl @@ -31,6 +31,10 @@ my $file; my @files; my %files;
+my $bindir = shift @ARGV; +my $sbindir = shift @ARGV; +my $libdir = shift @ARGV; + my $probe; my $args;
@@ -47,6 +51,8 @@ while (<>) { $files{$file} = { prefix => undef, probes => [] }; } elsif (m,^\s*\#\s*prefix:\s*(\S+)\s*$,) { $files{$file}->{prefix} = $1; + } elsif (m,^\s*\#\s*binary:\s*(\S+)\s*$,) { + $files{$file}->{binary} = $1; } else { if (m,\s*probe\s+([a-zA-Z0-9_]+)\((.*?)(\);)?$,) { $probe = $1; @@ -66,7 +72,7 @@ while (<>) { die "unexpected data $_ on line $."; } } else { - die "unexpected data $_ on line $."; + #die "unexpected data $_ on line $."; Forgotten?
This was to skip unknown comments, but it really skips too much. So I'm squashing in this more tailored change: @@ -45,14 +45,18 @@ while (<>) { next if /^\s*provider\s+\w+\s*{\s*$/; next if /^\s*};\s*$/; - if (m,^\s*\#\s*file:\s*(\S+)\s*$,) { - $file = $1; - push @files, $file; - $files{$file} = { prefix => undef, probes => [] }; - } elsif (m,^\s*\#\s*prefix:\s*(\S+)\s*$,) { - $files{$file}->{prefix} = $1; - } elsif (m,^\s*\#\s*binary:\s*(\S+)\s*$,) { - $files{$file}->{binary} = $1; + if (m,^\s*\#,) { + if (m,^\s*\#\s*file:\s*(\S+)\s*$,) { + $file = $1; + push @files, $file; + $files{$file} = { prefix => undef, probes => [] }; + } elsif (m,^\s*\#\s*prefix:\s*(\S+)\s*$,) { + $files{$file}->{prefix} = $1; + } elsif (m,^\s*\#\s*binary:\s*(\S+)\s*$,) { + $files{$file}->{binary} = $1; + } else { + # ignore unknown comments + } } else { if (m,\s*probe\s+([a-zA-Z0-9_]+)\((.*?)(\);)?$,) { $probe = $1; @@ -72,7 +76,7 @@ while (<>) { die "unexpected data $_ on line $."; } } else { - #die "unexpected data $_ on line $."; + die "unexpected data $_ on line $."; } } } Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|