qemu/scripts/cleanup-trace-events.pl
<<
>>
Prefs
   1#!/usr/bin/env perl
   2# Copyright (C) 2013 Red Hat, Inc.
   3#
   4# Authors:
   5#  Markus Armbruster <armbru@redhat.com>
   6#
   7# This work is licensed under the terms of the GNU GPL, version 2 or
   8# later.  See the COPYING file in the top-level directory.
   9
  10# Usage: cleanup-trace-events.pl trace-events
  11#
  12# Print cleaned up trace-events to standard output.
  13
  14use warnings;
  15use strict;
  16use File::Basename;
  17
  18my @files = ();
  19my $events = '';
  20my %seen = ();
  21
  22sub out {
  23    print sort @files;
  24    print $events;
  25    @files = ();
  26    $events = '';
  27    %seen = ();
  28}
  29
  30$#ARGV == 0 or die "usage: $0 FILE";
  31my $in = $ARGV[0];
  32my $dir = dirname($in);
  33open(IN, $in) or die "open $in: $!";
  34chdir($dir) or die "chdir $dir: $!";
  35
  36while (<IN>) {
  37    if (/^(disable |(tcg) |(vcpu) )*([a-z_0-9]+)\(/i) {
  38        my $pat = "trace_$4";
  39        $pat .= '_tcg' if defined $2;
  40        open GREP, '-|', 'git', 'grep', '-lw',
  41            defined $3 ? () : ('--max-depth', '1'),
  42            $pat
  43            or die "run git grep: $!";
  44        while (my $fname = <GREP>) {
  45            chomp $fname;
  46            next if $seen{$fname} || $fname eq 'trace-events';
  47            $seen{$fname} = 1;
  48            push @files, "# $fname\n";
  49        }
  50        unless (close GREP) {
  51            die "close git grep: $!"
  52                if $!;
  53            next;
  54        }
  55    } elsif (/^# ([^ ]*\.[ch])$/) {
  56        out;
  57        next;
  58    } elsif (!/^#|^$/) {
  59        warn "unintelligible line";
  60    }
  61    $events .= $_;
  62}
  63
  64out;
  65close(IN) or die "close $in: $!";
  66