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(a)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 :|