[Intel-gfx] [PATCH i-g-t] trace.pl: handle request tracepoint fields regardless of their order
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Fri Dec 15 18:04:47 UTC 2017
It doesn't look like tracepoint have any guarantee to have always the
same ordering of their parameter. Instead of relying on a predefined
regexp, let's split the parameters on commas and access the values
through a map.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
scripts/trace.pl | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/scripts/trace.pl b/scripts/trace.pl
index aed9b20d..41b1ae46 100755
--- a/scripts/trace.pl
+++ b/scripts/trace.pl
@@ -302,15 +302,25 @@ die if scalar(@args);
@ARGV = @args;
+sub params_to_map
+{
+ my @arr = split /,\s*/, $_;
+ my %keyvals = ();
+ foreach my $el (@arr) {
+ my @keyval = split /=/, $el;
+ $keyvals{$keyval[0]} = $keyval[1];
+ }
+ return %keyvals;
+}
+
sub parse_req
{
my ($line, $tp) = @_;
- state %cache;
-
- $cache{$tp} = qr/(\d+)\.(\d+):.*$tp.*ring=(\d+), ctx=(\d+), seqno=(\d+), global(?:_seqno)?=(\d+)/ unless exists $cache{$tp};
- if ($line =~ $cache{$tp}) {
- return ($1, $2, $3, $4, $5, $6);
+ if ($line =~ /(\d+)\.(\d+):.*$tp:\s*(.*)/) {
+ my %params = params_to_map($3);
+ return ($1, $2, $params{"ring"}, $params{"ctx"}, $params{"seqno"},
+ exists $params{"global"} ? $params{"global"} : $params{"global_seqno"});
} else {
return undef;
}
@@ -319,12 +329,12 @@ sub parse_req
sub parse_req_hw
{
my ($line, $tp) = @_;
- state %cache;
-
- $cache{$tp} = qr/(\d+)\.(\d+):.*$tp.*ring=(\d+), ctx=(\d+), seqno=(\d+), global(?:_seqno)?=(\d+), port=(\d+)/ unless exists $cache{$tp};
- if ($line =~ $cache{$tp}) {
- return ($1, $2, $3, $4, $5, $6, $7);
+ if ($line =~ /(\d+)\.(\d+):.*$tp:\s*(.*)/) {
+ my %params = params_to_map($3);
+ return ($1, $2, $params{"ring"}, $params{"ctx"}, $params{"seqno"},
+ exists $params{"global"} ? $params{"global"} : $params{"global_seqno"},
+ $params{"port"});
} else {
return undef;
}
--
2.15.1
More information about the Intel-gfx
mailing list