#!/usr/bin/perl # # kitrace_to_db # Copyright (C) 1995 by John Heidemann # $Id: kitrace_to_db,v 1.6 2003/05/23 04:17:53 johnh Exp $ # # This program is distributed under terms of the GNU general # public license, version 2. See the file COPYING # in $dblib for details. # sub usage { print STDERR < 0 && $ARGV[0] eq '-?'); # Extract the registers, if any. $reg_input_code = '@rs=(); '; $reg_output_code = ''; $reg_heads = ''; foreach $reg (@ARGV) { $reg =~ s/^%//; # strip % from %o0 $reg_heads = " $reg"; $reg_input_code .= '($r) = /' . $reg . '=([\da-fA-F]+)/; push(@rs, hex($r));'; }; @MoY = ('Jan','Feb','Mar','Apr','May','Jun', 'Jul','Aug','Sep','Oct','Nov','Dec'); $i = 0; foreach (@MoY) { $MoY{$_} = $i++; }; print "#h event clock diff$reg_heads\n"; while () { if (/^Warning:\s+(\d+) traces were lost/) { print "lost_traces\t$1\t0\n"; next; }; ($event, $month, $day, $hour, $min, $sec, $frac, $diff) = /(\S+)\s+(\w{3})\s+(\d+)\s+(\d{2}):(\d{2}):(\d{2})(\.\d{6})\s+\(\s*([^)]+)\)/; eval $reg_input_code; $diff = ' 0.0' if ($diff !~ /\d/); $t = &timelocal($sec, $min, $hour, $day, $MoY{$month}, 95); print "$event $t$frac $diff"; if ($reg_heads ne '') { print join(" ", '', @rs); }; print "\n"; } print "# | $prog " . join(" ", @orig_argv) . "\n"; exit 0;