GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / tools / perf / scripts / perl / Perf-Trace-Util / lib / Perf / Trace / Core.pm
blob9df376a9f62971e355de96b14324c52fa9b469ea
1 package Perf::Trace::Core;
3 use 5.010000;
4 use strict;
5 use warnings;
7 require Exporter;
9 our @ISA = qw(Exporter);
11 our %EXPORT_TAGS = ( 'all' => [ qw(
12 ) ] );
14 our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
16 our @EXPORT = qw(
17 define_flag_field define_flag_value flag_str dump_flag_fields
18 define_symbolic_field define_symbolic_value symbol_str dump_symbolic_fields
19 trace_flag_str
22 our $VERSION = '0.01';
24 my %trace_flags = (0x00 => "NONE",
25 0x01 => "IRQS_OFF",
26 0x02 => "IRQS_NOSUPPORT",
27 0x04 => "NEED_RESCHED",
28 0x08 => "HARDIRQ",
29 0x10 => "SOFTIRQ");
31 sub trace_flag_str
33 my ($value) = @_;
35 my $string;
37 my $print_delim = 0;
39 foreach my $idx (sort {$a <=> $b} keys %trace_flags) {
40 if (!$value && !$idx) {
41 $string .= "NONE";
42 last;
45 if ($idx && ($value & $idx) == $idx) {
46 if ($print_delim) {
47 $string .= " | ";
49 $string .= "$trace_flags{$idx}";
50 $print_delim = 1;
51 $value &= ~$idx;
55 return $string;
58 my %flag_fields;
59 my %symbolic_fields;
61 sub flag_str
63 my ($event_name, $field_name, $value) = @_;
65 my $string;
67 if ($flag_fields{$event_name}{$field_name}) {
68 my $print_delim = 0;
69 foreach my $idx (sort {$a <=> $b} keys %{$flag_fields{$event_name}{$field_name}{"values"}}) {
70 if (!$value && !$idx) {
71 $string .= "$flag_fields{$event_name}{$field_name}{'values'}{$idx}";
72 last;
74 if ($idx && ($value & $idx) == $idx) {
75 if ($print_delim && $flag_fields{$event_name}{$field_name}{'delim'}) {
76 $string .= " $flag_fields{$event_name}{$field_name}{'delim'} ";
78 $string .= "$flag_fields{$event_name}{$field_name}{'values'}{$idx}";
79 $print_delim = 1;
80 $value &= ~$idx;
85 return $string;
88 sub define_flag_field
90 my ($event_name, $field_name, $delim) = @_;
92 $flag_fields{$event_name}{$field_name}{"delim"} = $delim;
95 sub define_flag_value
97 my ($event_name, $field_name, $value, $field_str) = @_;
99 $flag_fields{$event_name}{$field_name}{"values"}{$value} = $field_str;
102 sub dump_flag_fields
104 for my $event (keys %flag_fields) {
105 print "event $event:\n";
106 for my $field (keys %{$flag_fields{$event}}) {
107 print " field: $field:\n";
108 print " delim: $flag_fields{$event}{$field}{'delim'}\n";
109 foreach my $idx (sort {$a <=> $b} keys %{$flag_fields{$event}{$field}{"values"}}) {
110 print " value $idx: $flag_fields{$event}{$field}{'values'}{$idx}\n";
116 sub symbol_str
118 my ($event_name, $field_name, $value) = @_;
120 if ($symbolic_fields{$event_name}{$field_name}) {
121 foreach my $idx (sort {$a <=> $b} keys %{$symbolic_fields{$event_name}{$field_name}{"values"}}) {
122 if (!$value && !$idx) {
123 return "$symbolic_fields{$event_name}{$field_name}{'values'}{$idx}";
124 last;
126 if ($value == $idx) {
127 return "$symbolic_fields{$event_name}{$field_name}{'values'}{$idx}";
132 return undef;
135 sub define_symbolic_field
137 my ($event_name, $field_name) = @_;
139 # nothing to do, really
142 sub define_symbolic_value
144 my ($event_name, $field_name, $value, $field_str) = @_;
146 $symbolic_fields{$event_name}{$field_name}{"values"}{$value} = $field_str;
149 sub dump_symbolic_fields
151 for my $event (keys %symbolic_fields) {
152 print "event $event:\n";
153 for my $field (keys %{$symbolic_fields{$event}}) {
154 print " field: $field:\n";
155 foreach my $idx (sort {$a <=> $b} keys %{$symbolic_fields{$event}{$field}{"values"}}) {
156 print " value $idx: $symbolic_fields{$event}{$field}{'values'}{$idx}\n";
163 __END__
164 =head1 NAME
166 Perf::Trace::Core - Perl extension for perf trace
168 =head1 SYNOPSIS
170 use Perf::Trace::Core
172 =head1 SEE ALSO
174 Perf (trace) documentation
176 =head1 AUTHOR
178 Tom Zanussi, E<lt>tzanussi@gmail.com<gt>
180 =head1 COPYRIGHT AND LICENSE
182 Copyright (C) 2009 by Tom Zanussi
184 This library is free software; you can redistribute it and/or modify
185 it under the same terms as Perl itself, either Perl version 5.10.0 or,
186 at your option, any later version of Perl 5 you may have available.
188 Alternatively, this software may be distributed under the terms of the
189 GNU General Public License ("GPL") version 2 as published by the Free
190 Software Foundation.
192 =cut