diff options
| author | 2010-03-05 15:46:18 -0500 | |
|---|---|---|
| committer | 2010-03-05 15:46:18 -0500 | |
| commit | 3fa04ecd72780da31ba8b329e148179bc24a9c7d (patch) | |
| tree | f5d462fd4aee086952d18f159f737c450ab46b3b /tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace | |
| parent | nfs41 fix NFS4ERR_CLID_INUSE for exchange id (diff) | |
| parent | NFS: Remove requirement for inode->i_mutex from nfs_invalidate_mapping (diff) | |
| download | wireguard-linux-3fa04ecd72780da31ba8b329e148179bc24a9c7d.tar.xz wireguard-linux-3fa04ecd72780da31ba8b329e148179bc24a9c7d.zip | |
Merge branch 'writeback-for-2.6.34' into nfs-for-2.6.34
Diffstat (limited to 'tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
| -rw-r--r-- | tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py | 91 | ||||
| -rw-r--r-- | tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py | 25 | 
2 files changed, 116 insertions, 0 deletions
| diff --git a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py new file mode 100644 index 000000000000..1dc464ee2ca8 --- /dev/null +++ b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py @@ -0,0 +1,91 @@ +# Core.py - Python extension for perf trace, core functions +# +# Copyright (C) 2010 by Tom Zanussi <tzanussi@gmail.com> +# +# This software may be distributed under the terms of the GNU General +# Public License ("GPL") version 2 as published by the Free Software +# Foundation. + +from collections import defaultdict + +def autodict(): +    return defaultdict(autodict) + +flag_fields = autodict() +symbolic_fields = autodict() + +def define_flag_field(event_name, field_name, delim): +    flag_fields[event_name][field_name]['delim'] = delim + +def define_flag_value(event_name, field_name, value, field_str): +    flag_fields[event_name][field_name]['values'][value] = field_str + +def define_symbolic_field(event_name, field_name): +    # nothing to do, really +    pass + +def define_symbolic_value(event_name, field_name, value, field_str): +    symbolic_fields[event_name][field_name]['values'][value] = field_str + +def flag_str(event_name, field_name, value): +    string = "" + +    if flag_fields[event_name][field_name]: +	print_delim = 0 +        keys = flag_fields[event_name][field_name]['values'].keys() +        keys.sort() +        for idx in keys: +            if not value and not idx: +                string += flag_fields[event_name][field_name]['values'][idx] +                break +            if idx and (value & idx) == idx: +                if print_delim and flag_fields[event_name][field_name]['delim']: +                    string += " " + flag_fields[event_name][field_name]['delim'] + " " +                string += flag_fields[event_name][field_name]['values'][idx] +                print_delim = 1 +                value &= ~idx + +    return string + +def symbol_str(event_name, field_name, value): +    string = "" + +    if symbolic_fields[event_name][field_name]: +        keys = symbolic_fields[event_name][field_name]['values'].keys() +        keys.sort() +        for idx in keys: +            if not value and not idx: +		string = symbolic_fields[event_name][field_name]['values'][idx] +                break +	    if (value == idx): +		string = symbolic_fields[event_name][field_name]['values'][idx] +                break + +    return string + +trace_flags = { 0x00: "NONE", \ +                    0x01: "IRQS_OFF", \ +                    0x02: "IRQS_NOSUPPORT", \ +                    0x04: "NEED_RESCHED", \ +                    0x08: "HARDIRQ", \ +                    0x10: "SOFTIRQ" } + +def trace_flag_str(value): +    string = "" +    print_delim = 0 + +    keys = trace_flags.keys() + +    for idx in keys: +	if not value and not idx: +	    string += "NONE" +	    break + +	if idx and (value & idx) == idx: +	    if print_delim: +		string += " | "; +	    string += trace_flags[idx] +	    print_delim = 1 +	    value &= ~idx + +    return string diff --git a/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py new file mode 100644 index 000000000000..83e91435ed09 --- /dev/null +++ b/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py @@ -0,0 +1,25 @@ +# Util.py - Python extension for perf trace, miscellaneous utility code +# +# Copyright (C) 2010 by Tom Zanussi <tzanussi@gmail.com> +# +# This software may be distributed under the terms of the GNU General +# Public License ("GPL") version 2 as published by the Free Software +# Foundation. + +NSECS_PER_SEC    = 1000000000 + +def avg(total, n): +    return total / n + +def nsecs(secs, nsecs): +    return secs * NSECS_PER_SEC + nsecs + +def nsecs_secs(nsecs): +    return nsecs / NSECS_PER_SEC + +def nsecs_nsecs(nsecs): +    return nsecs % NSECS_PER_SEC + +def nsecs_str(nsecs): +    str = "%5u.%09u" % (nsecs_secs(nsecs), nsecs_nsecs(nsecs)), +    return str | 
