1 package Perf::Trace::Core;
9 our @ISA = qw(Exporter);
11 our %EXPORT_TAGS = ( 'all' => [ qw(
14 our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
17 define_flag_field define_flag_value flag_str dump_flag_fields
18 define_symbolic_field define_symbolic_value symbol_str dump_symbolic_fields
21 our $VERSION = '0.01';
28 my ($event_name, $field_name, $value) = @_;
32 if ($flag_fields{$event_name}{$field_name}) {
34 foreach my $idx (sort {$a <=> $b} keys %{$flag_fields{$event_name}{$field_name}{"values"}}) {
35 if (!$value && !$idx) {
36 $string .= "$flag_fields{$event_name}{$field_name}{'values'}{$idx}";
39 if ($idx && ($value & $idx) == $idx) {
40 if ($print_delim && $flag_fields{$event_name}{$field_name}{'delim'}) {
41 $string .= " $flag_fields{$event_name}{$field_name}{'delim'} ";
43 $string .= "$flag_fields{$event_name}{$field_name}{'values'}{$idx}";
55 my ($event_name, $field_name, $delim) = @_;
57 $flag_fields{$event_name}{$field_name}{"delim"} = $delim;
62 my ($event_name, $field_name, $value, $field_str) = @_;
64 $flag_fields{$event_name}{$field_name}{"values"}{$value} = $field_str;
69 for my $event (keys %flag_fields) {
70 print "event $event:\n";
71 for my $field (keys %{$flag_fields{$event}}) {
72 print " field: $field:\n";
73 print " delim: $flag_fields{$event}{$field}{'delim'}\n";
74 foreach my $idx (sort {$a <=> $b} keys %{$flag_fields{$event}{$field}{"values"}}) {
75 print " value $idx: $flag_fields{$event}{$field}{'values'}{$idx}\n";
83 my ($event_name, $field_name, $value) = @_;
85 if ($symbolic_fields{$event_name}{$field_name}) {
86 foreach my $idx (sort {$a <=> $b} keys %{$symbolic_fields{$event_name}{$field_name}{"values"}}) {
87 if (!$value && !$idx) {
88 return "$symbolic_fields{$event_name}{$field_name}{'values'}{$idx}";
92 return "$symbolic_fields{$event_name}{$field_name}{'values'}{$idx}";
100 sub define_symbolic_field
102 my ($event_name, $field_name) = @_;
104 # nothing to do, really
107 sub define_symbolic_value
109 my ($event_name, $field_name, $value, $field_str) = @_;
111 $symbolic_fields{$event_name}{$field_name}{"values"}{$value} = $field_str;
114 sub dump_symbolic_fields
116 for my $event (keys %symbolic_fields) {
117 print "event $event:\n";
118 for my $field (keys %{$symbolic_fields{$event}}) {
119 print " field: $field:\n";
120 foreach my $idx (sort {$a <=> $b} keys %{$symbolic_fields{$event}{$field}{"values"}}) {
121 print " value $idx: $symbolic_fields{$event}{$field}{'values'}{$idx}\n";
131 Perf::Trace::Core - Perl extension for perf trace
135 use Perf::Trace::Core
139 Perf (trace) documentation
143 Tom Zanussi, E<lt>tzanussi@gmail.com<gt>
145 =head1 COPYRIGHT AND LICENSE
147 Copyright (C) 2009 by Tom Zanussi
149 This library is free software; you can redistribute it and/or modify
150 it under the same terms as Perl itself, either Perl version 5.10.0 or,
151 at your option, any later version of Perl 5 you may have available.
153 Alternatively, this software may be distributed under the terms of the
154 GNU General Public License ("GPL") version 2 as published by the Free