util: Remove `util/stats` directory
This does not appear to be used, we are therefore removing it.
Change-Id: I7c99f2e9879efc467bb75e279c4ef3b92fb1aa68
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/47025
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
diff --git a/util/stats/__init__.py b/util/stats/__init__.py
deleted file mode 100644
index b3f54da..0000000
--- a/util/stats/__init__.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (c) 2005 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/util/stats/barchart.py b/util/stats/barchart.py
deleted file mode 100644
index 77505b1..0000000
--- a/util/stats/barchart.py
+++ /dev/null
@@ -1,339 +0,0 @@
-# Copyright (c) 2005-2006 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import matplotlib, pylab
-from matplotlib.font_manager import FontProperties
-from matplotlib.numerix import array, arange, reshape, shape, transpose, zeros
-from matplotlib.numerix import Float
-from matplotlib.ticker import NullLocator
-from functools import reduce
-
-matplotlib.interactive(False)
-
-from .chart import ChartOptions
-
-class BarChart(ChartOptions):
- def __init__(self, default=None, **kwargs):
- super(BarChart, self).__init__(default, **kwargs)
- self.inputdata = None
- self.chartdata = None
- self.inputerr = None
- self.charterr = None
-
- def gen_colors(self, count):
- cmap = matplotlib.cm.get_cmap(self.colormap)
- if count == 1:
- return cmap([ 0.5 ])
-
- if count < 5:
- return cmap(arange(5) / float(4))[:count]
-
- return cmap(arange(count) / float(count - 1))
-
- # The input data format does not match the data format that the
- # graph function takes because it is intuitive. The conversion
- # from input data format to chart data format depends on the
- # dimensionality of the input data. Check here for the
- # dimensionality and correctness of the input data
- def set_data(self, data):
- if data is None:
- self.inputdata = None
- self.chartdata = None
- return
-
- data = array(data)
- dim = len(shape(data))
- if dim not in (1, 2, 3):
- raise AttributeError("Input data must be a 1, 2, or 3d matrix")
- self.inputdata = data
-
- # If the input data is a 1d matrix, then it describes a
- # standard bar chart.
- if dim == 1:
- self.chartdata = array([[data]])
-
- # If the input data is a 2d matrix, then it describes a bar
- # chart with groups. The matrix being an array of groups of
- # bars.
- if dim == 2:
- self.chartdata = transpose([data], axes=(2,0,1))
-
- # If the input data is a 3d matrix, then it describes an array
- # of groups of bars with each bar being an array of stacked
- # values.
- if dim == 3:
- self.chartdata = transpose(data, axes=(1,2,0))
-
- def get_data(self):
- return self.inputdata
-
- data = property(get_data, set_data)
-
- def set_err(self, err):
- if err is None:
- self.inputerr = None
- self.charterr = None
- return
-
- err = array(err)
- dim = len(shape(err))
- if dim not in (1, 2, 3):
- raise AttributeError("Input err must be a 1, 2, or 3d matrix")
- self.inputerr = err
-
- if dim == 1:
- self.charterr = array([[err]])
-
- if dim == 2:
- self.charterr = transpose([err], axes=(2,0,1))
-
- if dim == 3:
- self.charterr = transpose(err, axes=(1,2,0))
-
- def get_err(self):
- return self.inputerr
-
- err = property(get_err, set_err)
-
- # Graph the chart data.
- # Input is a 3d matrix that describes a plot that has multiple
- # groups, multiple bars in each group, and multiple values stacked
- # in each bar. The underlying bar() function expects a sequence of
- # bars in the same stack location and same group location, so the
- # organization of the matrix is that the inner most sequence
- # represents one of these bar groups, then those are grouped
- # together to make one full stack of bars in each group, and then
- # the outer most layer describes the groups. Here is an example
- # data set and how it gets plotted as a result.
- #
- # e.g. data = [[[10,11,12], [13,14,15], [16,17,18], [19,20,21]],
- # [[22,23,24], [25,26,27], [28,29,30], [31,32,33]]]
- #
- # will plot like this:
- #
- # 19 31 20 32 21 33
- # 16 28 17 29 18 30
- # 13 25 14 26 15 27
- # 10 22 11 23 12 24
- #
- # Because this arrangement is rather conterintuitive, the rearrange
- # function takes various matricies and arranges them to fit this
- # profile.
- #
- # This code deals with one of the dimensions in the matrix being
- # one wide.
- #
- def graph(self):
- if self.chartdata is None:
- raise AttributeError("Data not set for bar chart!")
-
- dim = len(shape(self.inputdata))
- cshape = shape(self.chartdata)
- if self.charterr is not None and shape(self.charterr) != cshape:
- raise AttributeError('Dimensions of error and data do not match')
-
- if dim == 1:
- colors = self.gen_colors(cshape[2])
- colors = [ [ colors ] * cshape[1] ] * cshape[0]
-
- if dim == 2:
- colors = self.gen_colors(cshape[0])
- colors = [ [ [ c ] * cshape[2] ] * cshape[1] for c in colors ]
-
- if dim == 3:
- colors = self.gen_colors(cshape[1])
- colors = [ [ [ c ] * cshape[2] for c in colors ] ] * cshape[0]
-
- colors = array(colors)
-
- self.figure = pylab.figure(figsize=self.chart_size)
-
- outer_axes = None
- inner_axes = None
- if self.xsubticks is not None:
- color = self.figure.get_facecolor()
- self.metaaxes = self.figure.add_axes(self.figure_size,
- axisbg=color, frameon=False)
- for tick in self.metaaxes.xaxis.majorTicks:
- tick.tick1On = False
- tick.tick2On = False
- self.metaaxes.set_yticklabels([])
- self.metaaxes.set_yticks([])
- size = [0] * 4
- size[0] = self.figure_size[0]
- size[1] = self.figure_size[1] + .12
- size[2] = self.figure_size[2]
- size[3] = self.figure_size[3] - .12
- self.axes = self.figure.add_axes(size)
- outer_axes = self.metaaxes
- inner_axes = self.axes
- else:
- self.axes = self.figure.add_axes(self.figure_size)
- outer_axes = self.axes
- inner_axes = self.axes
-
- bars_in_group = len(self.chartdata)
-
- width = 1.0 / ( bars_in_group + 1)
- center = width / 2
-
- bars = []
- for i,stackdata in enumerate(self.chartdata):
- bottom = array([0.0] * len(stackdata[0]), Float)
- stack = []
- for j,bardata in enumerate(stackdata):
- bardata = array(bardata)
- ind = arange(len(bardata)) + i * width + center
- yerr = None
- if self.charterr is not None:
- yerr = self.charterr[i][j]
- bar = self.axes.bar(ind, bardata, width, bottom=bottom,
- color=colors[i][j], yerr=yerr)
- if self.xsubticks is not None:
- self.metaaxes.bar(ind, [0] * len(bardata), width)
- stack.append(bar)
- bottom += bardata
- bars.append(stack)
-
- if self.xlabel is not None:
- outer_axes.set_xlabel(self.xlabel)
-
- if self.ylabel is not None:
- inner_axes.set_ylabel(self.ylabel)
-
- if self.yticks is not None:
- ymin, ymax = self.axes.get_ylim()
- nticks = float(len(self.yticks))
- ticks = arange(nticks) / (nticks - 1) * (ymax - ymin) + ymin
- inner_axes.set_yticks(ticks)
- inner_axes.set_yticklabels(self.yticks)
- elif self.ylim is not None:
- inner_axes.set_ylim(self.ylim)
-
- if self.xticks is not None:
- outer_axes.set_xticks(arange(cshape[2]) + .5)
- outer_axes.set_xticklabels(self.xticks)
-
- if self.xsubticks is not None:
- numticks = (cshape[0] + 1) * cshape[2]
- inner_axes.set_xticks(arange(numticks) * width + 2 * center)
- xsubticks = list(self.xsubticks) + [ '' ]
- inner_axes.set_xticklabels(xsubticks * cshape[2], fontsize=7,
- rotation=30)
-
- if self.legend is not None:
- if dim == 1:
- lbars = bars[0][0]
- if dim == 2:
- lbars = [ bars[i][0][0] for i in range(len(bars))]
- if dim == 3:
- number = len(bars[0])
- lbars = [ bars[0][number - j - 1][0] for j in range(number)]
-
- if self.fig_legend:
- self.figure.legend(lbars, self.legend, self.legend_loc,
- prop=FontProperties(size=self.legend_size))
- else:
- self.axes.legend(lbars, self.legend, self.legend_loc,
- prop=FontProperties(size=self.legend_size))
-
- if self.title is not None:
- self.axes.set_title(self.title)
-
- def savefig(self, name):
- self.figure.savefig(name)
-
- def savecsv(self, name):
- f = file(name, 'w')
- data = array(self.inputdata)
- dim = len(data.shape)
-
- if dim == 1:
- #if self.xlabel:
- # f.write(', '.join(list(self.xlabel)) + '\n')
- f.write(', '.join([ '%f' % val for val in data]) + '\n')
- if dim == 2:
- #if self.xlabel:
- # f.write(', '.join([''] + list(self.xlabel)) + '\n')
- for i,row in enumerate(data):
- ylabel = []
- #if self.ylabel:
- # ylabel = [ self.ylabel[i] ]
- f.write(', '.join(ylabel + [ '%f' % v for v in row]) + '\n')
- if dim == 3:
- f.write("don't do 3D csv files\n")
- pass
-
- f.close()
-
-if __name__ == '__main__':
- from random import randrange
- import random, sys
-
- dim = 3
- number = 5
-
- args = sys.argv[1:]
- if len(args) > 3:
- sys.exit("invalid number of arguments")
- elif len(args) > 0:
- myshape = [ int(x) for x in args ]
- else:
- myshape = [ 3, 4, 8 ]
-
- # generate a data matrix of the given shape
- size = reduce(lambda x,y: x*y, myshape)
- #data = [ random.randrange(size - i) + 10 for i in xrange(size) ]
- data = [ float(i)/100.0 for i in range(size) ]
- data = reshape(data, myshape)
-
- # setup some test bar charts
- if True:
- chart1 = BarChart()
- chart1.data = data
-
- chart1.xlabel = 'Benchmark'
- chart1.ylabel = 'Bandwidth (GBps)'
- chart1.legend = [ 'x%d' % x for x in range(myshape[-1]) ]
- chart1.xticks = [ 'xtick%d' % x for x in range(myshape[0]) ]
- chart1.title = 'this is the title'
- if len(myshape) > 2:
- chart1.xsubticks = [ '%d' % x for x in range(myshape[1]) ]
- chart1.graph()
- chart1.savefig('/tmp/test1.png')
- chart1.savefig('/tmp/test1.ps')
- chart1.savefig('/tmp/test1.eps')
- chart1.savecsv('/tmp/test1.csv')
-
- if False:
- chart2 = BarChart()
- chart2.data = data
- chart2.colormap = 'gray'
- chart2.graph()
- chart2.savefig('/tmp/test2.png')
- chart2.savefig('/tmp/test2.ps')
-
-# pylab.show()
diff --git a/util/stats/categories.py b/util/stats/categories.py
deleted file mode 100644
index 3f570fb..0000000
--- a/util/stats/categories.py
+++ /dev/null
@@ -1,1938 +0,0 @@
-# Copyright (c) 2005-2006 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-func_categories = { \
- # Buffer management functions
- '__skb_linearize' : 'buffer',
- 'skb_clone' : 'buffer',
- 'skb_clone_fraglist' : 'buffer',
- 'skb_seq_read' : 'buffer',
- 'sock_alloc_send_skb' : 'buffer',
- 'sinic_rxskb_alloc' : 'buffer',
-
- # Copy functions
- 'sinic_copyfrom' : 'copy',
- '__copy_user' : 'copy',
- 'skb_copy_bits' : 'copy',
- 'skb_copy_datagram_iovec' : 'copy',
- 'sinic_vcopy_iov' : 'idle',
-
- # Driver functions
- 'do_tx_done' : 'driver',
- 'ns83820_get_drvinfo' : 'driver',
- 'ns83820_get_stats' : 'driver',
- 'ns83820_hard_start_xmit' : 'driver',
- 'ns83820_open' : 'driver',
- 'ns83820_rx_kick' : 'driver',
- 'ns83820_update_stats' : 'driver',
- 'ns83820_irq' : 'driver',
- 'phy_intr' : 'driver',
- 'rx_irq' : 'driver',
- 'rx_action' : 'driver',
- 'sinic_intr' : 'driver',
- 'sinic_xmit' : 'driver',
- 'sinic_rxskb_new' : 'driver',
-
- # Idle functions
- 'cpu_idle' : 'idle',
-
- # Interrupt functions
- 'do_entInt' : 'interrupt',
- 'entInt' : 'interrupt',
- 'handle_IRQ_event' : 'interrupt',
- 'irq_exit' : 'interrupt',
-
- # Other functions
- 'ret_from_sys_call' : 'other',
- 'top' : 'other',
-
- # Stack functions
- '__ip_conntrack_confirm' : 'stack',
- '__ip_conntrack_find' : 'stack',
- '__tcp_ack_snd_check' : 'stack',
- '__tcp_checksum_complete_user' : 'stack',
- 'dev_queue_xmit' : 'stack',
- 'eth_header_cache' : 'stack',
- 'ether_setup' : 'stack',
- 'icmp_error' : 'stack',
- 'ip_call_ra_chain' : 'stack',
- 'ip_conntrack_alter_reply' : 'stack',
- 'ip_conntrack_tcp_update' : 'stack',
- 'ip_ct_find_helper' : 'stack',
- 'ip_finish_output' : 'stack',
- 'ip_finish_output2' : 'stack',
- 'ip_local_deliver_finish' : 'stack',
- 'ip_nat_setup_info' : 'stack',
- 'ip_rcv' : 'stack',
- 'ip_rcv_finish' : 'stack',
- 'netif_receive_skb' : 'stack',
- 'nf_log_packet' : 'stack',
- 'nf_queue' : 'stack',
- 'tcp_connect' : 'stack',
- 'tcp_data_queue' : 'stack',
- 'tcp_packet' : 'stack',
- 'tcp_read_sock' : 'stack',
- 'tcp_rcv_established' : 'stack',
- 'tcp_recvmsg' : 'stack',
- 'tcp_sendpage' : 'stack',
- 'tcp_transmit_skb' : 'stack',
- 'tcp_v4_do_rcv' : 'stack',
- 'unregister_netdevice' : 'stack',
-
- # Syscall functions
- 'entSys' : 'syscall',
-
- # User functions
- 'user' : 'user',
- }
-
-def func_categorize(symbol):
- from .categories import func_categories
- if symbol in func_categories:
- return func_categories[symbol]
- return None
-
-
-pc_categories = {
- 'CALL_PALrdunique_' : 'interrupt', #
- 'Call_Pal_Callsys' : 'interrupt', #
- 'Call_Pal_Rdps' : 'interrupt', #
- 'Call_Pal_Rdusp' : 'interrupt', #
- 'Call_Pal_Rti' : 'interrupt', #
- 'Call_Pal_Swpctx' : 'interrupt', #
- 'Call_Pal_Swpipl' : 'interrupt', #
- 'Call_Pal_Wrusp' : 'interrupt', #
- 'SHATransform': 'driver', # drivers/char/random.c,
- 'TRAP_INTERRUPT_10_' : 'interrupt', #
- 'Trap_Dtbmiss_Single' : 'buffer', #
- 'Trap_Dtbmiss_double' : 'buffer', #
- 'Trap_Interrupt' : 'interrupt', #
- 'Trap_Itbmiss' : 'buffer', #
- 'Trap_Unalign' : 'alignment',
- 'UNALIGN_NO_DISMISS' : 'alignment',
- 'UNALIGN_NO_DISMISS_10_' : 'alignment',
- '__alloc_pages' : 'buffer', # mm/page_alloc.c,
- '__anon_vma_link': 'buffer', # mm/rmap.c, include/linux/rmap.h,
- '__bio_add_page' : 'other', # fs/bio.c,
- '__bitmap_weight' : 'other', # lib/bitmap.c, include/linux/bitmap.h,
- '__blk_put_request' : 'other', # drivers/block/ll_rw_blk.c,
- '__block_commit_write' : 'other', # fs/buffer.c,
- '__block_prepare_write' : 'other', # fs/buffer.c,
- '__block_write_full_page': 'other', # fs/buffer.c,
- '__bread' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- '__brelse' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- '__bss_start' : 'user',
- '__bss_stop' : 'other', # include/asm-generic/sections.h,
- '__cond_resched' : 'other', # kernel/sched.c, include/linux/sched.h,
- '__const_udelay': 'other', # include/asm-i386/delay.h,
- '__constant_c_memset' : 'other', # include/asm-alpha/string.h,
- '__copy_from_user_ll': 'copy', # include/asm-i386/uaccess.h,
- '__copy_to_user_ll': 'copy', # include/asm-i386/uaccess.h,
- '__copy_user' : 'copy', # include/asm-alpha/uaccess.h,
- '__d_lookup' : 'other', # fs/dcache.c, include/linux/dcache.h,
- '__d_path': 'other', # fs/dcache.c,
- '__delay': 'other', # arch/alpha/lib/udelay.c, include/asm-alpha/delay.h, include/asm-i386/delay.h,
- '__dequeue_signal' : 'other', # kernel/signal.c,
- '__divl' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__divlu' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__divq' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__divqu' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__do_softirq' : 'stack', # kernel/softirq.c,
- '__down': 'interrupt', # include/asm-alpha/semaphore.h, include/asm-i386/semaphore.h,
- '__down_failed' : 'other', # arch/alpha/kernel/semaphore.c, include/asm-alpha/semaphore.h,
- '__down_trylock': 'interrupt', # include/asm-alpha/semaphore.h, include/asm-i386/semaphore.h,
- '__elv_add_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- '__end_that_request_first' : 'other', # drivers/block/ll_rw_blk.c,
- '__exit_sighand': 'other', # kernel/signal.c, include/linux/sched.h,
- '__exit_signal': 'other', # kernel/signal.c, include/linux/sched.h,
- '__filemap_copy_from_user_iovec' : 'buffer', # mm/filemap.c,
- '__filemap_fdatawrite' : 'buffer', # mm/filemap.c,
- '__find_get_block' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- '__find_get_block_slow' : 'other', # fs/buffer.c,
- '__fput' : 'other', # fs/file_table.c,
- '__free_pages' : 'buffer', # mm/page_alloc.c,
- '__free_pages_ok': 'buffer', # mm/page_alloc.c,
- '__generic_file_aio_read': 'buffer', # mm/filemap.c, include/linux/fs.h,
- '__generic_unplug_device' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- '__get_free_pages' : 'other', # mm/page_alloc.c, drivers/md/raid6.h,
- '__get_page_state': 'buffer', # mm/page_alloc.c,
- '__get_user_4': 'other', # include/asm-i386/uaccess.h,
- '__get_zone_counts': 'other', #
- '__getblk' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- '__getblk_slow' : 'other', # fs/buffer.c,
- '__group_complete_signal' : 'user', # kernel/signal.c, is kinda syscall
- '__group_send_sig_info' : 'user', # kernel/signal.c, is kinda syscall
- '__iget' : 'other', # fs/inode.c, include/linux/fs.h,
- '__insert_inode_hash': 'other', # fs/inode.c, include/linux/fs.h,
- '__insert_vm_struct': 'buffer', # mm/mmap.c,
- '__ip_conntrack_confirm' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_core.h,
- '__ip_conntrack_find' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c,
- '__ip_ct_find_proto' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_core.h,
- '__ip_route_output_key' : 'stack', # net/ipv4/route.c,
- '__kfree_skb' : 'buffer', # net/core/skbuff.c, include/linux/skbuff.h,
- '__kmalloc' : 'buffer', # mm/slab.c, include/linux/slab.h,
- '__load_new_mm_context': 'buffer',
- '__lookup': 'other', # lib/radix-tree.c,
- '__lookup_hash': 'other', # fs/namei.c,
- '__lookup_tag' : 'buffer', # lib/radix-tree.c,
- '__make_request' : 'driver', # drivers/block/ll_rw_blk.c, drivers/block/ll_rw_blk.c,
- '__mark_inode_dirty' : 'other', # fs/fs-writeback.c, include/linux/fs.h,
- '__memcpy_aligned_up' : 'copy', # arch/alpha/lib/memcpy.c,
- '__memcpy_unaligned_up' : 'copy', # arch/alpha/lib/memcpy.c,
- '__memset' : 'copy', # include/asm-alpha/string.h,
- '__mmdrop': 'other', # kernel/fork.c,
- '__mod_timer' : 'other', # kernel/timer.c, include/linux/timer.h,
- '__modify_IO_APIC_irq': 'interrupt', #
- '__net_random': 'other', #
- '__page_cache_release' : 'buffer', # mm/swap.c,
- '__pagevec_free': 'buffer', # mm/page_alloc.c, include/linux/pagevec.h,
- '__pagevec_lru_add' : 'buffer', # mm/swap.c, include/linux/pagevec.h,
- '__pagevec_lru_add_active': 'buffer', # mm/swap.c, include/linux/pagevec.h,
- '__pagevec_release' : 'buffer', # mm/swap.c, include/linux/pagevec.h,
- '__pollwait' : 'other', # fs/select.c, fs/select.c,
- '__pskb_trim_head': 'stack', # net/ipv4/tcp_output.c,
- '__put_task_struct': 'other', # kernel/fork.c, include/linux/sched.h,
- '__queue_work': 'other', # kernel/workqueue.c,
- '__rb_erase_color' : 'buffer', # lib/rbtree.c,
- '__rb_rotate_left' : 'buffer', # lib/rbtree.c,
- '__rb_rotate_right' : 'buffer', # lib/rbtree.c,
- '__rcu_process_callbacks': 'other', #
- '__read_page_state' : 'buffer', # mm/page_alloc.c, include/linux/page-flags.h,
- '__release_sock' : 'stack', # net/core/sock.c,
- '__remlu' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__remove_from_page_cache': 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- '__remove_shared_vm_struct': 'buffer', # mm/mmap.c,
- '__remqu' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__rmqueue' : 'buffer', # mm/page_alloc.c,
- '__scsi_done' : 'other', # drivers/scsi/scsi.c, drivers/scsi/scsi_priv.h,
- '__scsi_get_command' : 'other', # drivers/scsi/scsi.c,
- '__set_page_buffers' : 'other', # fs/buffer.c,
- '__set_page_dirty_nobuffers' : 'buffer', # mm/page-writeback.c, include/linux/mm.h,
- '__sk_stream_mem_reclaim' : 'buffer', # net/core/stream.c,
- '__sock_create': 'stack', # net/socket.c,
- '__strncpy_from_user' : 'copy', # include/asm-alpha/uaccess.h,
- '__strnlen_user': 'user',
- '__switch_to': 'interrupt', #
- '__sync_single_inode' : 'other', # fs/fs-writeback.c,
- '__tasklet_schedule' : 'other', # kernel/softirq.c,
- '__tcp_ack_snd_check' : 'stack', # net/ipv4/tcp_input.c,
- '__tcp_data_snd_check' : 'stack', # net/ipv4/tcp_input.c,
- '__tcp_grow_window' : 'stack', # net/ipv4/tcp_input.c,
- '__tcp_put_port' : 'stack', # net/ipv4/tcp_ipv4.c,
- '__tcp_select_window' : 'stack', # net/ipv4/tcp_output.c,
- '__tcp_tw_hashdance' : 'stack', # net/ipv4/tcp_minisocks.c,
- '__tcp_v4_check_established':'stack',
- '__unhash_process': 'other', # kernel/exit.c,
- '__unmask_IO_APIC_irq': 'interrupt', #
- '__up_wakeup' : 'interrupt', # arch/alpha/kernel/semaphore.c, include/asm-alpha/semaphore.h,
- '__user_walk' : 'other', # fs/namei.c,
- '__vm_stat_account': 'other', #
- '__vma_link': 'buffer', # mm/mmap.c,
- '__vma_link_rb': 'buffer', # mm/mmap.c, include/linux/mm.h,
- '__wait_on_buffer' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- '__wake_up' : 'other', # kernel/sched.c,
- '__wake_up_common' : 'other', # kernel/sched.c,
- '__wake_up_locked': 'other', # kernel/sched.c,
- '__wake_up_parent': 'other', # kernel/signal.c,
- '__wake_up_sync': 'other', # kernel/sched.c,
- '__writeback_single_inode' : 'other', # fs/fs-writeback.c,
- 'acct_process': 'other', # kernel/acct.c, include/linux/acct.h, include/linux/acct.h,
- 'ack_edge_ioapic_irq': 'interrupt', #
- 'ack_edge_ioapic_vector': 'interrupt', #
- 'activate_page' : 'buffer', # mm/swap.c,
- 'activate_task' : 'other', # kernel/sched.c,
- 'add_disk_randomness' : 'other', # drivers/char/random.c, include/linux/genhd.h,
- 'add_interrupt_randomness': 'driver', # drivers/char/random.c, include/linux/random.h,
- 'add_timer_randomness' : 'driver', # drivers/char/random.c,
- 'add_to_page_cache' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'add_to_page_cache_lru' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'add_wait_queue' : 'other', # kernel/fork.c,
- 'add_wait_queue_exclusive' : 'other', # kernel/fork.c,
- 'aligned' : 'other', #
- 'alloc_buffer_head' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'alloc_dcookie': 'other', # fs/dcookies.c,
- 'alloc_fd_array': 'other', # fs/file.c, include/linux/file.h,
- 'alloc_inode' : 'other', # fs/inode.c,
- 'alloc_pidmap': 'other', # kernel/pid.c, include/linux/pid.h,
- 'alloc_skb' : 'buffer', # net/core/skbuff.c, include/linux/skbuff.h,
- 'alloc_slabmgmt' : 'buffer', # mm/slab.c,
- 'alpha_switch_to' : 'other', # include/asm-alpha/system.h,
- 'anon_vma_link': 'buffer', # mm/rmap.c, include/linux/rmap.h, include/linux/rmap.h,
- 'anon_vma_prepare': 'buffer', # mm/rmap.c, include/linux/rmap.h, include/linux/rmap.h,
- 'anon_vma_unlink': 'buffer', # mm/rmap.c, include/linux/rmap.h,
- 'apache': 'other', #
- 'apic_timer_interrupt': 'interrupt', # include/asm-i386/hw_irq.h,
- 'arch_get_unmapped_area': 'buffer',
- 'arch_get_unmapped_area_1': 'buffer',
- 'arch_get_unmapped_area_topdown': 'other', #
- 'arch_pick_mmap_layout': 'other', #
- 'arch_unmap_area_topdown': 'other', #
- 'arp_hash': 'stack', # net/ipv4/arp.c, net/ipv4/arp.c,
- 'arp_process': 'stack', # net/ipv4/arp.c,
- 'arp_rcv': 'stack', # net/ipv4/arp.c,
- 'artsd': 'other', #
- 'as_add_arq_hash' : 'other', # drivers/block/as-iosched.c,
- 'as_add_arq_rb' : 'other', # drivers/block/as-iosched.c,
- 'as_add_request' : 'other', # drivers/block/as-iosched.c,
- 'as_antic_stop' : 'other', # drivers/block/as-iosched.c,
- 'as_choose_req' : 'other', # drivers/block/as-iosched.c,
- 'as_completed_request' : 'other', # drivers/block/as-iosched.c,
- 'as_dispatch_request' : 'other', # drivers/block/as-iosched.c,
- 'as_fifo_expired' : 'other', # drivers/block/as-iosched.c,
- 'as_find_arq_hash' : 'other', # drivers/block/as-iosched.c,
- 'as_find_arq_rb' : 'other', # drivers/block/as-iosched.c,
- 'as_find_first_arq' : 'other', # drivers/block/as-iosched.c,
- 'as_find_next_arq' : 'other', # drivers/block/as-iosched.c,
- 'as_former_request' : 'other', # drivers/block/as-iosched.c,
- 'as_get_io_context' : 'other', # drivers/block/as-iosched.c,
- 'as_insert_request' : 'other', # drivers/block/as-iosched.c,
- 'as_latter_request' : 'other', # drivers/block/as-iosched.c,
- 'as_merge' : 'other', # drivers/block/as-iosched.c,
- 'as_merged_request' : 'other', # drivers/block/as-iosched.c,
- 'as_merged_requests' : 'other', # drivers/block/as-iosched.c,
- 'as_move_to_dispatch' : 'other', # drivers/block/as-iosched.c,
- 'as_next_request' : 'other', # drivers/block/as-iosched.c,
- 'as_put_request' : 'other', # drivers/block/as-iosched.c,
- 'as_queue_empty' : 'other', # drivers/block/as-iosched.c,
- 'as_remove_dispatched_request' : 'other', # drivers/block/as-iosched.c,
- 'as_remove_merge_hints' : 'other', # drivers/block/as-iosched.c,
- 'as_remove_queued_request' : 'other', # drivers/block/as-iosched.c,
- 'as_remove_request' : 'other', # drivers/block/as-iosched.c,
- 'as_set_request' : 'other', # drivers/block/as-iosched.c,
- 'as_update_arq' : 'other', # drivers/block/as-iosched.c,
- 'as_update_iohist' : 'other', # drivers/block/as-iosched.c,
- 'atomic_dec_and_lock' : 'other', # lib/dec_and_lock.c, include/linux/spinlock.h, include/linux/spinlock.h,
- 'atomic_dec_and_lock_1' : 'other', # arch/alpha/lib/dec_and_lock.c,
- 'attach_pid': 'other', # kernel/pid.c,
- 'attempt_merge' : 'other', # drivers/block/ll_rw_blk.c,
- 'auth_domain_drop' : 'other', # net/sunrpc/svcauth.c,
- 'auth_domain_put' : 'other', # net/sunrpc/svcauth.c, include/linux/sunrpc/svcauth.h,
- 'autoremove_wake_function' : 'other', # kernel/fork.c, include/linux/wait.h,
- 'bad_range' : 'buffer', # mm/page_alloc.c,
- 'balance_dirty_pages' : 'buffer', # mm/page-writeback.c,
- 'balance_dirty_pages_ratelimited' : 'buffer', # mm/page-writeback.c, include/linux/writeback.h,
- 'basename': 'other', #
- 'bash': 'other', #
- 'batch_entropy_store' : 'interrupt', # drivers/char/random.c, include/linux/random.h,
- 'bh_lru_install' : 'other', # fs/buffer.c,
- 'bh_waitq_head' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'bh_wake_function' : 'other', # fs/buffer.c,
- 'bio_add_page' : 'other', # fs/bio.c, include/linux/bio.h,
- 'bio_alloc' : 'other', # fs/bio.c, include/linux/bio.h,
- 'bio_destructor' : 'other', # fs/bio.c,
- 'bio_endio' : 'other', # fs/bio.c, include/linux/bio.h,
- 'bio_get_nr_vecs' : 'other', # fs/bio.c, include/linux/bio.h,
- 'bio_hw_segments' : 'other', # fs/bio.c, include/linux/bio.h,
- 'bio_phys_segments' : 'other', # fs/bio.c, include/linux/bio.h,
- 'bio_put' : 'other', # fs/bio.c, include/linux/bio.h,
- 'blk_backing_dev_unplug' : 'other', # drivers/block/ll_rw_blk.c,
- 'blk_cleanup_queue': 'driver', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_get_queue': 'driver', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_hw_contig_segment' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_phys_contig_segment' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_plug_device' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_queue_bounce' : 'buffer', # mm/highmem.c, include/linux/blkdev.h,
- 'blk_recount_segments' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_remove_plug' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_rq_map_sg' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blk_run_queue' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'blkdev_ioctl': 'driver', # drivers/block/ioctl.c, include/linux/fs.h,
- 'block_ioctl': 'other', # fs/block_dev.c,
- 'block_prepare_write' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'block_read_full_page': 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'block_write_full_page': 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'bmap': 'other', # fs/jfs/jfs_dmap.h, fs/inode.c, include/linux/fs.h,
- 'buffer_insert_list' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'buffered_rmqueue' : 'buffer', # mm/page_alloc.c,
- 'cache_alloc_refill' : 'buffer', # mm/slab.c,
- 'cache_check' : 'other', # net/sunrpc/cache.c, include/linux/sunrpc/cache.h,
- 'cache_flusharray' : 'buffer', # mm/slab.c,
- 'cache_grow' : 'buffer', # mm/slab.c,
- 'cache_init_objs' : 'buffer', # mm/slab.c,
- 'cache_reap': 'buffer', # mm/slab.c,
- 'cached_lookup': 'other', # fs/namei.c,
- 'call_rcu' : 'other', # kernel/rcupdate.c,
- 'can_share_swap_page': 'buffer', # mm/swapfile.c, include/linux/swap.h, include/linux/swap.h,
- 'can_vma_merge_after': 'buffer', # mm/mmap.c,
- 'can_vma_merge_before': 'buffer', # mm/mmap.c,
- 'capable': 'other',
- 'cascade' : 'interrupt', # kernel/timer.c,
- 'cat': 'other', #
- 'cdev_get': 'other', # fs/char_dev.c, include/linux/cdev.h,
- 'cdrom': 'other', #
- 'check_kill_permission' : 'other', # kernel/signal.c,
- 'chrdev_open': 'other', # fs/char_dev.c, include/linux/fs.h,
- 'cleanup_rbuf' : 'stack', # net/ipv4/tcp.c,
- 'clear_inode' : 'other', # fs/inode.c, include/linux/fs.h,
- 'clear_page' : 'buffer', # include/asm-alpha/page.h,
- 'clear_page_dirty_for_io' : 'buffer', # mm/page-writeback.c, include/linux/mm.h,
- 'clear_page_tables': 'buffer', # mm/memory.c, include/linux/mm.h,
- 'clear_queue_congested' : 'other', # drivers/block/ll_rw_blk.c,
- 'clear_user': 'other', # include/asm-alpha/uaccess.h, include/asm-i386/uaccess.h,
- 'clock_panelapplet.so': 'other', #
- 'close_private_file' : 'other', # fs/file_table.c, include/linux/fs.h,
- 'copy_skb_header' : 'copy',
- 'common_interrupt': 'interrupt', #
- 'complete': 'other', # kernel/sched.c,
- 'compute_creds': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'con_chars_in_buffer': 'driver', # drivers/char/vt.c,
- 'con_write_room': 'driver', # drivers/char/vt.c,
- 'convert_fxsr_from_user': 'interrupt', #
- 'convert_fxsr_to_user': 'interrupt', #
- 'copy_files': 'other', # kernel/fork.c,
- 'copy_from_user': 'copy', # include/asm-alpha/uaccess.h, include/asm-i386/uaccess.h,
- 'copy_mm': 'other', # kernel/fork.c,
- 'copy_namespace': 'other', # fs/namespace.c, include/linux/namespace.h,
- 'copy_page': 'copy',
- 'copy_page_range': 'buffer', # mm/memory.c, include/linux/mm.h,
- 'copy_process': 'other', # kernel/fork.c, include/linux/sched.h,
- 'copy_semundo': 'other', # ipc/sem.c, include/linux/sem.h,
- 'copy_strings': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'copy_strings_kernel': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'copy_thread': 'syscall', # arch/alpha/kernel/process.c, include/linux/sched.h,
- 'copy_to_user': 'copy', # include/asm-alpha/uaccess.h, include/asm-i386/uaccess.h,
- 'copy_vma': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'count': 'driver', # fs/exec.c, init/initramfs.c, drivers/char/serial_tx3912.c, drivers/char/rocket.c, drivers/isdn/hardware/eicon/diva_didd.c, drivers/isdn/hardware/eicon/divasmain.c, drivers/isdn/hardware/eicon/divasmain.c, drivers/isdn/hardware/eicon/capimain.c, drivers/isdn/hardware/eicon/divasi.c, drivers/isdn/hardware/eicon/divasi.c, drivers/isdn/hardware/eicon/divasi.c, drivers/isdn/hardware/eicon/divasi.c, drivers/isdn/hardware/eicon/divasi.c, drivers/isdn/hardware/eicon/divamnt.c, drivers/isdn/hardware/eicon/divamnt.c, drivers/isdn/hardware/eicon/divamnt.c, drivers/isdn/hardware/eicon/divamnt.c, drivers/isdn/hardware/eicon/divamnt.c, drivers/media/video/w9966.c, drivers/media/video/w9966.c,
- 'count_open_files': 'other', # kernel/fork.c,
- 'cp_new_stat' : 'other', # fs/stat.c,
- 'cp_new_stat64': 'other', # fs/stat.c,
- 'cpu_idle' : 'idle', # arch/alpha/kernel/process.c, init/main.c,
- 'cpu_quiet' : 'other', # kernel/rcupdate.c,
- 'create_buffers' : 'other', # fs/buffer.c,
- 'create_elf_tables': 'other', # fs/binfmt_elf.c,
- 'create_empty_buffers' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'cron': 'other', #
- 'csum_partial' : 'stack', # arch/alpha/lib/checksum.c, include/asm-alpha/checksum.h,
- 'csum_partial_copy_nocheck' : 'copy', # arch/alpha/lib/csum_partial_copy.c, include/asm-alpha/checksum.h,
- 'csum_partial_copy_to_xdr' : 'copy', # net/sunrpc/xprt.c, net/sunrpc/svcsock.c,
- 'csum_tcpudp_magic' : 'stack', # arch/alpha/lib/checksum.c, include/asm-alpha/checksum.h,
- 'csum_tcpudp_nofold' : 'stack', # arch/alpha/lib/checksum.c, include/asm-alpha/checksum.h,
- 'current_kernel_time' : 'other', # kernel/time.c, include/linux/time.h,
- 'cut': 'other', #
- 'd_alloc' : 'other', # fs/dcache.c, include/linux/dcache.h,
- 'd_alloc_anon' : 'other', # fs/dcache.c, include/linux/dcache.h,
- 'd_callback' : 'other', # fs/dcache.c,
- 'd_find_alias' : 'other', # fs/dcache.c, include/linux/dcache.h,
- 'd_free' : 'other', # fs/dcache.c,
- 'd_instantiate' : 'other', # fs/dcache.c, include/linux/dcache.h,
- 'd_lookup': 'other', # fs/dcache.c, include/linux/dcache.h,
- 'd_path': 'other', # fs/dcache.c, include/linux/dcache.h,
- 'd_rehash' : 'other', # fs/dcache.c, include/linux/dcache.h,
- 'deactivate_task' : 'other', # kernel/sched.c,
- 'default_idle' : 'idle', # arch/alpha/kernel/process.c, include/linux/platform.h,
- 'default_llseek': 'other', # fs/read_write.c, include/linux/fs.h,
- 'default_wake_function' : 'other', # kernel/sched.c, include/linux/wait.h,
- 'del_singleshot_timer_sync' : 'other', # kernel/timer.c, include/linux/timer.h, include/linux/timer.h,
- 'del_timer' : 'other', # kernel/timer.c, include/linux/timer.h,
- 'delay_pmtmr': 'interrupt', #
- 'delayed_work_timer_fn': 'other', # kernel/workqueue.c,
- 'dentry_open': 'other', # fs/open.c, include/linux/fs.h,
- 'deny_write_access': 'other', # fs/namei.c, include/linux/fs.h,
- 'dequeue_signal' : 'other', # kernel/signal.c, include/linux/sched.h,
- 'dequeue_task' : 'other', # kernel/sched.c,
- 'destroy_context': 'interrupt', # include/asm-alpha/mmu_context.h, include/asm-i386/mmu_context.h,
- 'destroy_inode' : 'other', # fs/inode.c, include/linux/fs.h,
- 'detach_pid': 'other', # kernel/pid.c,
- 'detach_vmas_to_be_unmapped': 'buffer', # mm/mmap.c,
- 'dev_queue_xmit' : 'stack', # net/core/dev.c, include/linux/netdevice.h,
- 'dev_shutdown' : 'stack', # net/sched/sch_generic.c,
- 'dev_watchdog': 'stack', # net/sched/sch_generic.c,
- 'device_not_available': 'interrupt', #
- 'disable_irq_nosync': 'interrupt', # arch/alpha/kernel/irq.c, include/asm-alpha/irq.h, include/asm-i386/irq.h,
- 'disk_round_stats' : 'other', # drivers/block/ll_rw_blk.c, include/linux/genhd.h,
- 'dnotify_flush' : 'other', # fs/dnotify.c, include/linux/dnotify.h,
- 'dnotify_parent' : 'other', # fs/dnotify.c, include/linux/dnotify.h,
- 'do_IRQ': 'driver', # drivers/s390/cio/cio.c,
- 'do_anonymous_page' : 'buffer', # mm/memory.c,
- 'do_bindings' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat_core.h,
- 'do_brk': 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
- 'do_csum_partial_copy_from_user' : 'copy', # arch/alpha/lib/csum_partial_copy.c,
- 'do_entInt' : 'interrupt', # arch/alpha/kernel/irq_alpha.c,
- 'do_entUna': 'alignment',
- 'do_execve': 'other', # fs/exec.c, include/linux/sched.h,
- 'do_exit': 'other', # kernel/exit.c,
- 'do_fcntl' : 'user', # fs/fcntl.c, used to be syscall`
- 'do_fork': 'other', # kernel/fork.c, include/linux/sched.h,
- 'do_futex': 'other', # kernel/futex.c, include/linux/futex.h,
- 'do_generic_mapping_read': 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'do_gettimeofday' : 'user', # arch/alpha/kernel/time.c, include/linux/time.h, used to by syscall
- 'do_group_exit': 'other', # kernel/exit.c, include/linux/sched.h,
- 'do_invalidatepage': 'buffer', # mm/truncate.c,
- 'do_lookup' : 'user', # fs/namei.c, used to by syscall
- 'do_mmap_pgoff': 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
- 'do_mpage_readpage': 'other', # fs/mpage.c,
- 'do_mremap': 'buffer', # mm/mremap.c,
- 'do_munmap': 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
- 'do_no_page' : 'user', # mm/memory.c, used to by syscall
- 'do_nosym': 'other', #
- 'do_notify_parent': 'other', # kernel/signal.c, include/linux/sched.h,
- 'do_notify_resume': 'interrupt', # arch/alpha/kernel/signal.c,
- 'do_osf_sigprocmask' : 'user', # arch/alpha/kernel/signal.c, used to by syscall
- 'do_page_cache_readahead': 'buffer', # mm/readahead.c, include/linux/mm.h,
- 'do_page_fault' : 'user', # arch/alpha/mm/fault.c, used to by syscall
- 'do_pipe': 'syscall', # fs/pipe.c, arch/alpha/kernel/osf_sys.c, include/linux/fs.h,
- 'do_poll' : 'user', # fs/select.c, drivers/macintosh/apm_emu.c, used to by syscall
- 'do_pollfd' : 'user', # fs/select.c, used to by syscall
- 'do_posix_clock_monotonic_gettime': 'other', # kernel/posix-timers.c, kernel/posix-timers.c, include/linux/time.h,
- 'do_posix_clock_monotonic_gettime_parts': 'other', # kernel/posix-timers.c, kernel/posix-timers.c,
- 'do_posix_gettime': 'other', # kernel/posix-timers.c, kernel/posix-timers.c,
- 'do_readv_writev' : 'user', # fs/read_write.c, used to by syscall
- 'do_select': 'other', # fs/select.c, include/linux/poll.h,
- 'do_setitimer': 'other', # kernel/itimer.c, include/linux/time.h,
- 'do_sigaction': 'other', # kernel/signal.c, include/linux/sched.h,
- 'do_signal' : 'user', # arch/alpha/kernel/signal.c, arch/alpha/kernel/signal.c, used to by syscall
- 'do_sigreturn' : 'user', # arch/alpha/kernel/signal.c, used to by syscall
- 'do_sigsuspend' : 'user', # arch/alpha/kernel/signal.c, used to by syscall
- 'do_softirq' : 'interrupt', # kernel/softirq.c, include/linux/interrupt.h,
- 'do_switch_stack' : 'other', #
- 'do_sync_read' : 'other', # fs/read_write.c, include/linux/fs.h,
- 'do_sync_write': 'other', # fs/read_write.c, include/linux/fs.h,
- 'do_timer' : 'other', # kernel/timer.c, include/linux/sched.h,
- 'do_truncate': 'other', # fs/open.c, include/linux/fs.h,
- 'do_tx_done' : 'driver', # drivers/net/ns83820.c,
- 'do_wait': 'other', #
- 'do_wp_page': 'buffer', # mm/memory.c,
- 'do_writepages' : 'buffer', # mm/page-writeback.c, include/linux/writeback.h,
- 'done' : 'other', # drivers/usb/gadget/net2280.c, drivers/usb/gadget/goku_udc.c, drivers/usb/gadget/pxa2xx_udc.c, drivers/scsi/aha152x.c, drivers/scsi/aha152x.c, include/linux/wavefront.h,
- 'dp264_disable_irq' : 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'dp264_enable_irq' : 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'dp264_end_irq' : 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'dp264_srm_device_interrupt' : 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'dput' : 'other', # fs/dcache.c, include/linux/dcache.h,
- 'drain_array_locked': 'buffer', # mm/slab.c, mm/slab.c,
- 'drive_stat_acct' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'drop_buffers': 'other', # fs/buffer.c,
- 'drop_key_refs': 'other', # kernel/futex.c,
- 'dst_alloc': 'stack', # net/core/dst.c,
- 'dst_output' : 'stack', #
- 'dummy_bprm_alloc_security': 'other', # security/dummy.c,
- 'dummy_bprm_apply_creds': 'other', # security/dummy.c,
- 'dummy_bprm_check_security': 'other', # security/dummy.c,
- 'dummy_bprm_secureexec': 'other', # security/dummy.c,
- 'dummy_bprm_set_security': 'other', # security/dummy.c,
- 'dummy_capable': 'other', # security/dummy.c,
- 'dummy_d_instantiate': 'other', # security/dummy.c,
- 'dummy_file_alloc_security': 'other', # security/dummy.c,
- 'dummy_file_free_security': 'other', # security/dummy.c,
- 'dummy_file_ioctl': 'other', # security/dummy.c,
- 'dummy_file_mmap': 'other', # security/dummy.c,
- 'dummy_file_permission': 'other', # security/dummy.c,
- 'dummy_inode_alloc_security': 'other', # security/dummy.c,
- 'dummy_inode_create': 'other', # security/dummy.c,
- 'dummy_inode_free_security': 'other', # security/dummy.c,
- 'dummy_inode_getattr': 'other', # security/dummy.c,
- 'dummy_inode_mkdir': 'other', # security/dummy.c,
- 'dummy_inode_permission': 'other', # security/dummy.c,
- 'dummy_inode_post_create': 'other', # security/dummy.c,
- 'dummy_inode_post_mkdir': 'other', # security/dummy.c,
- 'dummy_task_create': 'other', # security/dummy.c,
- 'dummy_task_free_security': 'other', # security/dummy.c,
- 'dummy_task_kill': 'other', # security/dummy.c,
- 'dummy_task_wait': 'other', # security/dummy.c,
- 'dummy_vm_enough_memory': 'other', # security/dummy.c,
- 'dup_task_struct': 'other', # kernel/fork.c,
- 'e100': 'driver', #
- 'e1000': 'driver',
- 'effective_prio' : 'other', # kernel/sched.c,
- 'ehci_hcd': 'driver', # drivers/usb/host/ehci.h,
- 'elf_map': 'other', # fs/binfmt_elf.c, fs/binfmt_elf.c,
- 'eligible_child': 'other', # kernel/exit.c,
- 'elv_completed_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_former_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_latter_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_merge' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_merge_requests' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_merged_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_next_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_put_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_queue_empty' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_remove_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_rq_merge_ok' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_set_request' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'elv_try_last_merge' : 'other', # drivers/block/elevator.c, include/linux/elevator.h,
- 'enable_irq': 'driver', # arch/alpha/kernel/irq.c, drivers/net/wan/sdla_ppp.c, drivers/net/wan/sdla_x25.c, drivers/net/wan/wanpipe_multppp.c, drivers/net/wan/sdla_chdlc.c, drivers/net/wan/sdlamain.c, drivers/net/wan/sdla_fr.c, include/asm-alpha/irq.h, include/asm-i386/irq.h,
- 'encode_post_op_attr' : 'other', # fs/nfsd/nfs3xdr.c,
- 'encode_wcc_data' : 'other', # fs/nfsd/nfs3xdr.c,
- 'end' : 'other', # arch/alpha/boot/misc.c, drivers/media/video/w9966.c, drivers/media/video/w9966.c,
- 'end_bio_bh_io_sync' : 'other', # fs/buffer.c,
- 'end_buffer_async_write': 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'end_buffer_write_sync' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'end_edge_ioapic_vector': 'other', # include/asm-i386/io_apic.h,
- 'end_level_ioapic_irq': 'interrupt', #
- 'end_level_ioapic_vector': 'interrupt', #
- 'end_page_writeback' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'end_that_request_chunk' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'end_that_request_first': 'driver', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'end_that_request_last' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'enqueue_task' : 'other', # kernel/sched.c,
- 'entInt' : 'interrupt', # arch/alpha/kernel/proto.h,
- 'entMM' : 'interrupt', # arch/alpha/kernel/proto.h,
- 'entSys' : 'interrupt', # arch/alpha/kernel/proto.h,
- 'entUna' : 'alignment',
- 'entUnaUser':'alignment',
- 'error_code': 'other', #
- 'eth_header' : 'stack', # net/ethernet/eth.c, include/linux/etherdevice.h,
- 'eth_type_trans' : 'stack', # net/ethernet/eth.c, include/linux/etherdevice.h,
- 'ev5_flush_tlb_current_page': 'buffer',
- 'ev5_switch_mm' : 'other', # include/asm-alpha/mmu_context.h,
- 'eventpoll_init_file' : 'other', # fs/eventpoll.c, include/linux/eventpoll.h,
- 'exec_mmap': 'other', # fs/exec.c,
- 'exim4': 'other', #
- 'exit_aio': 'other', # fs/aio.c,
- 'exit_itimers': 'other', # kernel/posix-timers.c, include/linux/sched.h,
- 'exit_mmap': 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
- 'exit_notify': 'other', # kernel/exit.c,
- 'exit_sem': 'other', # ipc/sem.c, include/linux/sem.h, include/linux/sem.h,
- 'exp_find_key' : 'other', # fs/nfsd/export.c, include/linux/nfsd/export.h,
- 'exp_readlock' : 'other', # fs/nfsd/export.c, include/linux/nfsd/export.h,
- 'exp_readunlock' : 'other', # fs/nfsd/export.c, include/linux/nfsd/export.h,
- 'expand_fd_array': 'other', # fs/file.c, include/linux/file.h,
- 'expand_files': 'other', # fs/fcntl.c,
- 'expand_stack': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'expkey_put' : 'other', # fs/nfsd/export.c, include/linux/nfsd/export.h,
- 'export_decode_fh' : 'other', # fs/exportfs/expfs.c,
- 'export_iget' : 'other', # fs/exportfs/expfs.c,
- 'expr': 'other', #
- 'ext2_alloc_block' : 'other', # fs/ext2/inode.c,
- 'ext2_alloc_branch' : 'other', # fs/ext2/inode.c,
- 'ext2_block_to_path' : 'other', # fs/ext2/inode.c,
- 'ext2_discard_prealloc' : 'other', # fs/ext2/inode.c, fs/ext2/ext2.h,
- 'ext2_find_near' : 'other', # fs/ext2/inode.c,
- 'ext2_free_blocks' : 'other', # fs/ext2/balloc.c, fs/ext2/ext2.h,
- 'ext2_get_block' : 'other', # fs/ext2/inode.c,
- 'ext2_get_branch' : 'other', # fs/ext2/inode.c,
- 'ext2_get_group_desc' : 'other', # fs/ext2/balloc.c, fs/ext2/ext2.h,
- 'ext2_get_inode' : 'other', # fs/ext2/inode.c,
- 'ext2_new_block' : 'other', # fs/ext2/balloc.c, fs/ext2/ext2.h,
- 'ext2_prepare_write' : 'other', # fs/ext2/inode.c,
- 'ext2_put_inode' : 'other', # fs/ext2/inode.c, fs/ext2/ext2.h,
- 'ext2_release_file' : 'other', # fs/ext2/file.c,
- 'ext2_setattr' : 'other', # fs/ext2/inode.c, fs/ext2/ext2.h,
- 'ext2_sync_file' : 'other', # fs/ext2/fsync.c, fs/ext2/ext2.h,
- 'ext2_sync_inode' : 'other', # fs/ext2/inode.c, fs/ext2/ext2.h,
- 'ext2_update_inode' : 'other', # fs/ext2/inode.c, fs/ext2/inode.c,
- 'ext2_write_inode' : 'other', # fs/ext2/inode.c, fs/ext2/ext2.h,
- 'ext2_writepages' : 'other', # fs/ext2/inode.c,
- 'ext3': 'other', #
- 'fasync_helper': 'other', # fs/fcntl.c, include/linux/fs.h,
- 'fd_install' : 'other', # fs/open.c,
- 'fget' : 'other', # fs/file_table.c,
- 'fget_light' : 'other', # fs/file_table.c,
- 'fh_put' : 'other', # fs/nfsd/nfsfh.c, include/linux/nfsd/nfsfh.h,
- 'fh_verify' : 'other', # fs/nfsd/nfsfh.c, include/linux/nfsd/nfsfh.h,
- 'fib_lookup': 'stack', # net/ipv4/fib_rules.c,
- 'fib_rule_put': 'stack', # net/ipv4/fib_rules.c,
- 'fib_semantic_match': 'stack', # net/ipv4/fib_semantics.c,
- 'file_ioctl': 'other', # fs/ioctl.c,
- 'file_kill' : 'other', # fs/file_table.c, include/linux/fs.h,
- 'file_move': 'other', # fs/file_table.c, include/linux/fs.h,
- 'file_ra_state_init': 'buffer', # mm/readahead.c, include/linux/fs.h,
- 'file_read_actor': 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'filemap_fdatawait' : 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'filemap_fdatawrite' : 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'filemap_nopage': 'buffer', # mm/filemap.c, include/linux/mm.h,
- 'filesystems_read_proc': 'other', # fs/proc/proc_misc.c,
- 'filp_close' : 'other', # fs/open.c, include/linux/fs.h,
- 'filp_open' : 'other', # fs/open.c, include/linux/fs.h,
- 'find_best_ips_proto_fast' : 'stack', # net/ipv4/netfilter/ip_nat_core.c,
- 'find_busiest_group' : 'other', # kernel/sched.c,
- 'find_dcookie': 'other', # fs/dcookies.c,
- 'find_exported_dentry' : 'other', # fs/exportfs/expfs.c, fs/nfsd/export.c,
- 'find_extend_vma': 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
- 'find_get_page' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'find_get_pages': 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'find_get_pages_tag' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'find_inode_fast' : 'other', # fs/inode.c,
- 'find_inode_number' : 'other', # fs/dcache.c, include/linux/fs.h,
- 'find_lock_page' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'find_mergeable_anon_vma': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'find_nat_proto' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat_protocol.h,
- 'find_next_zero_bit': 'other', # include/asm-alpha/bitops.h, include/asm-i386/bitops.h,
- 'find_or_create_page' : 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'find_pid' : 'user', # kernel/pid.c, used to be syscall
- 'find_snap_client': 'stack', # net/802/psnap.c,
- 'find_task_by_pid' : 'user', # kernel/pid.c, include/linux/sched.h, used to be syscall
- 'find_task_by_pid_type': 'other', #
- 'find_vma' : 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h, used to be syscall
- 'find_vma_prepare': 'buffer', # mm/mmap.c,
- 'find_vma_prev': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'finish_task_switch' : 'other', # kernel/sched.c, used to be syscall
- 'finish_wait' : 'other', # kernel/fork.c, used to be syscall
- 'flush_old_exec': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'flush_signal_handlers': 'other', # kernel/signal.c, include/linux/sched.h,
- 'flush_sigqueue': 'other', # kernel/signal.c,
- 'flush_thread': 'syscall', # arch/alpha/kernel/process.c, include/linux/sched.h,
- 'fn_hash_lookup': 'stack', # net/ipv4/fib_hash.c,
- 'follow_mount' : 'user', # fs/namei.c, used to be syscall
- 'found' : 'other', # sound/oss/forte.c, scripts/kconfig/gconf.c, drivers/net/fec.c, drivers/scsi/ibmmca.c, drivers/scsi/fd_mcs.c,
- 'fput' : 'user', # fs/file_table.c, used to be syscall
- 'free_block' : 'buffer', # mm/slab.c, drivers/char/drm/radeon_mem.c, mm/slab.c,
- 'free_buffer_head': 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'free_fd_array': 'other', # fs/file.c, include/linux/file.h,
- 'free_hot_cold_page' : 'buffer', # mm/page_alloc.c,
- 'free_hot_page' : 'buffer', # mm/page_alloc.c,
- 'free_page_and_swap_cache': 'buffer', # mm/swap_state.c, include/linux/swap.h, include/linux/swap.h,
- 'free_pages' : 'buffer', # mm/page_alloc.c, drivers/char/drm/drm_memory_debug.h, drivers/md/raid6.h, drivers/char/drm/drmP.h,
- 'free_pages_bulk': 'buffer', # mm/page_alloc.c,
- 'free_pgtables': 'buffer', # mm/mmap.c,
- 'free_pidmap': 'other', # kernel/pid.c,
- 'free_task': 'other', # kernel/fork.c,
- 'free_uid' : 'other', # kernel/user.c, include/linux/sched.h,
- 'freed_request' : 'other', # drivers/block/ll_rw_blk.c,
- 'fs_may_remount_ro' : 'other', # fs/file_table.c, include/linux/fs.h,
- 'fsync_buffers_list' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'futex_wait': 'other', # kernel/futex.c,
- 'futex_wake': 'other', # kernel/futex.c,
- 'gconfd-2': 'other', #
- 'generic_commit_write' : 'user', # fs/buffer.c, include/linux/buffer_head.h, used to be syscall
- 'generic_delete_inode': 'other', # fs/inode.c, include/linux/fs.h,
- 'generic_drop_inode' : 'user', # fs/inode.c, used to be syscall
- 'generic_file_aio_read': 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'generic_file_aio_write': 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'generic_file_aio_write_nolock' : 'user', # mm/filemap.c, include/linux/fs.h, used to be syscall
- 'generic_file_buffered_write': 'other', #
- 'generic_file_llseek': 'other', # fs/read_write.c, include/linux/fs.h,
- 'generic_file_mmap': 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'generic_file_open' : 'user', # fs/open.c, include/linux/fs.h, used to be syscall
- 'generic_file_write' : 'user', # mm/filemap.c, include/linux/fs.h, used to be syscall
- 'generic_file_write_nolock' : 'user', # mm/filemap.c, include/linux/fs.h, used to be syscall
- 'generic_file_writev' : 'user', # mm/filemap.c, include/linux/fs.h, used to be syscall
- 'generic_fillattr' : 'user', # fs/stat.c, include/linux/fs.h, used to be syscall
- 'generic_forget_inode' : 'user', # fs/inode.c, used to be syscall
- 'generic_make_request' : 'user', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h, used to be syscall
- 'generic_unplug_device' : 'driver', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'get_conntrack_index' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_tcp.c,
- 'get_device' : 'driver', # drivers/base/core.c, include/linux/device.h,
- 'get_dirty_limits' : 'buffer', # mm/page-writeback.c,
- 'get_empty_filp' : 'other', # fs/file_table.c, include/linux/fs.h,
- 'get_free_idx': 'interrupt', #
- 'get_futex_key': 'other', # kernel/futex.c,
- 'get_io_context' : 'other', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'get_jiffies_64': 'other', # kernel/time.c, include/linux/jiffies.h, include/linux/jiffies.h,
- 'get_new_inode_fast': 'other', # fs/inode.c,
- 'get_object' : 'other', # fs/exportfs/expfs.c,
- 'get_offset_pmtmr': 'interrupt', #
- 'get_one_pte_map_nested': 'buffer', # mm/mremap.c,
- 'get_page_state': 'buffer', # mm/page_alloc.c, include/linux/page-flags.h,
- 'get_pipe_inode': 'other', # fs/pipe.c,
- 'get_request' : 'other', # drivers/block/ll_rw_blk.c,
- 'get_sample_stats' : 'stack', # net/core/dev.c,
- 'get_signal_to_deliver' : 'other', # kernel/signal.c, include/linux/signal.h,
- 'get_task_mm': 'other', # include/linux/sched.h,
- 'get_tuple' : 'driver', # net/ipv4/netfilter/ip_conntrack_core.c, drivers/isdn/hisax/elsa_cs.c, drivers/isdn/hisax/teles_cs.c, drivers/isdn/hisax/avma1_cs.c, drivers/isdn/hardware/avm/avm_cs.c, drivers/bluetooth/bt3c_cs.c, drivers/bluetooth/btuart_cs.c, drivers/bluetooth/dtl1_cs.c, include/linux/netfilter_ipv4/ip_conntrack_core.h,
- 'get_unique_tuple' : 'stack', # net/ipv4/netfilter/ip_nat_core.c,
- 'get_unmapped_area': 'buffer', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
- 'get_unused_fd' : 'other', # fs/open.c, include/linux/file.h, used to be syscall
- 'get_vmalloc_info': 'other', # fs/proc/proc_misc.c,
- 'get_write_access' : 'other', # fs/namei.c, include/linux/fs.h, used to be syscall
- 'get_writeback_state' : 'other', # mm/page-writeback.c, used to be syscall
- 'get_zone_counts': 'buffer', # mm/page_alloc.c, include/linux/mmzone.h,
- 'getname' : 'other', # fs/namei.c, include/linux/fs.h, used to be syscall
- 'getnstimeofday': 'other', #
- 'getrusage': 'other', # kernel/sys.c, kernel/exit.c,
- 'grab_block' : 'other', # fs/ext2/balloc.c,
- 'grep': 'other', #
- 'group_release_blocks' : 'other', # fs/ext2/balloc.c,
- 'group_reserve_blocks' : 'other', # fs/ext2/balloc.c,
- 'group_send_sig_info' : 'other', # kernel/signal.c, include/linux/signal.h,
- 'groups_alloc' : 'other', # kernel/sys.c, include/linux/sched.h, used to be syscall
- 'groups_free' : 'other', # kernel/sys.c, include/linux/sched.h, used to be syscall
- 'groups_search' : 'other', # kernel/sys.c, used to be syscall
- 'groups_sort' : 'other', # kernel/sys.c, used to be syscall
- 'groups_to_user': 'other', # kernel/sys.c,
- 'grow_dev_page' : 'other', # fs/buffer.c,
- 'halfMD4Transform' : 'other', # fs/ext3/hash.c, drivers/char/random.c,
- 'handle_IRQ_event' : 'interrupt', # arch/alpha/kernel/irq.c, include/asm-alpha/irq.h,
- 'handle_irq' : 'interrupt', # arch/alpha/kernel/irq.c, arch/alpha/kernel/irq_impl.h,
- 'handle_mm_fault' : 'interrupt', # mm/memory.c, include/linux/mm.h,
- 'handle_signal': 'interrupt', # arch/alpha/kernel/signal.c,
- 'handle_stop_signal' : 'interrupt', # kernel/signal.c,
- 'hash_conntrack' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c,
- 'hash_futex': 'other', # kernel/futex.c,
- 'hash_refile' : 'other', # fs/nfsd/nfscache.c,
- 'i8042_interrupt': 'interrupt', # drivers/input/serio/i8042.c, drivers/input/serio/i8042.c,
- 'i8042_timer_func': 'driver', # drivers/input/serio/i8042.c,
- 'i_waitq_head' : 'other', # fs/inode.c,
- 'ide_cd': 'other', #
- 'ide_core': 'other', #
- 'ide_disk': 'other', # include/linux/ide.h,
- 'idle_cpu' : 'idle', # kernel/sched.c, include/linux/sched.h,
- 'iget_locked' : 'other', # fs/inode.c, include/linux/fs.h,
- 'in_group_p' : 'other', # kernel/sys.c, include/linux/sched.h,
- 'inet_accept' : 'stack', # net/ipv4/af_inet.c,
- 'inet_create': 'stack', # net/ipv4/af_inet.c,
- 'inet_getname' : 'stack', # net/ipv4/af_inet.c,
- 'inet_release' : 'stack', # net/ipv4/af_inet.c,
- 'inet_sendmsg' : 'stack', # net/ipv4/af_inet.c,
- 'inet_sendpage' : 'stack', # net/ipv4/af_inet.c,
- 'inet_shutdown' : 'stack', # net/ipv4/af_inet.c,
- 'inet_sock_destruct' : 'stack', # net/ipv4/af_inet.c,
- 'init': 'driver', # net/core/pktgen.c, net/ipv4/netfilter/ip_conntrack_ftp.c, net/ipv4/netfilter/ip_conntrack_irc.c, net/ipv4/netfilter/ip_tables.c, net/ipv4/netfilter/ipt_ECN.c, net/ipv4/netfilter/ipt_LOG.c, net/ipv4/netfilter/ipt_helper.c, net/ipv4/netfilter/ipt_TOS.c, net/ipv4/netfilter/ipt_addrtype.c, net/ipv4/netfilter/ipt_limit.c, net/ipv4/netfilter/ipt_tcpmss.c, net/ipv4/netfilter/ipt_ecn.c, net/ipv4/netfilter/ipt_esp.c, net/ipv4/netfilter/ipt_mac.c, net/ipv4/netfilter/ipt_tos.c, net/ipv4/netfilter/ipt_ttl.c, net/ipv4/netfilter/ip_nat_ftp.c, net/ipv4/netfilter/ip_nat_irc.c, net/ipv4/netfilter/ipt_multiport.c, net/ipv4/netfilter/ipt_dscp.c, net/ipv4/netfilter/arp_tables.c, net/ipv4/netfilter/ip_conntrack_tftp.c, net/ipv4/netfilter/ipt_physdev.c, net/ipv4/netfilter/ipt_state.c, net/ipv4/netfilter/ipt_ah.c, net/ipv4/netfilter/ipt_mark.c, net/ipv4/netfilter/ip_queue.c, net/ipv4/netfilter/ipt_conntrack.c, net/ipv4/netfilter/ip_fw_compat.c, net/ipv4/netfilter/ipt_NETMAP.c, net/ipv4/netfilter/ipt_pkttype.c, net/ipv4/netfilter/ipt_MASQUERADE.c, net/ipv4/netfilter/ip_conntrack_standalone.c, net/ipv4/netfilter/ip_nat_snmp_basic.c, net/ipv4/netfilter/ipt_length.c, net/ipv4/netfilter/arpt_mangle.c, net/ipv4/netfilter/ipt_CLASSIFY.c, net/ipv4/netfilter/ip_nat_standalone.c, net/ipv4/netfilter/ipt_NOTRACK.c, net/ipv4/netfilter/ip_nat_amanda.c, net/ipv4/netfilter/ipt_REDIRECT.c, net/ipv4/netfilter/ipt_TCPMSS.c, net/ipv4/netfilter/ipt_REJECT.c, net/ipv4/netfilter/ip_conntrack_amanda.c, net/ipv4/netfilter/ipt_owner.c, net/ipv4/netfilter/ipt_DSCP.c, net/ipv4/netfilter/ip_nat_tftp.c, net/ipv4/netfilter/arptable_filter.c, net/ipv4/netfilter/ipt_iprange.c, net/ipv4/netfilter/ipt_MARK.c, net/ipv4/netfilter/iptable_filter.c, net/ipv4/netfilter/iptable_mangle.c, net/ipv4/netfilter/ipt_SAME.c, net/ipv4/netfilter/ipt_realm.c, net/ipv4/netfilter/ipt_ULOG.c, net/ipv4/netfilter/iptable_raw.c, net/ipv6/netfilter/ip6t_length.c, net/ipv6/netfilter/ip6t_eui64.c, net/ipv6/netfilter/ip6t_frag.c, net/ipv6/netfilter/ip6t_multiport.c, net/ipv6/netfilter/ip6t_ah.c, net/ipv6/netfilter/ip6t_hl.c, net/ipv6/netfilter/ip6t_rt.c, net/ipv6/netfilter/ip6t_mark.c, net/ipv6/netfilter/ip6_queue.c, net/ipv6/netfilter/ip6table_filter.c, net/ipv6/netfilter/ip6table_mangle.c, net/ipv6/netfilter/ip6t_owner.c, net/ipv6/netfilter/ip6t_LOG.c, net/ipv6/netfilter/ip6t_dst.c, net/ipv6/netfilter/ip6t_esp.c, net/ipv6/netfilter/ip6t_hbh.c, net/ipv6/netfilter/ip6t_mac.c, net/ipv6/netfilter/ip6_tables.c, net/ipv6/netfilter/ip6t_MARK.c, net/ipv6/netfilter/ip6table_raw.c, net/ipv6/netfilter/ip6t_limit.c, net/bridge/netfilter/ebt_among.c, net/bridge/netfilter/ebt_dnat.c, net/bridge/netfilter/ebt_802_3.c, net/bridge/netfilter/ebt_mark.c, net/bridge/netfilter/ebt_redirect.c, net/bridge/netfilter/ebt_pkttype.c, net/bridge/netfilter/ebt_snat.c, net/bridge/netfilter/ebt_vlan.c, net/bridge/netfilter/ebt_arp.c, net/bridge/netfilter/ebt_log.c, net/bridge/netfilter/ebt_stp.c, net/bridge/netfilter/ebtables.c, net/bridge/netfilter/ebt_limit.c, net/bridge/netfilter/ebtable_broute.c, net/bridge/netfilter/ebt_arpreply.c, net/bridge/netfilter/ebt_ip.c, net/bridge/netfilter/ebtable_filter.c, net/bridge/netfilter/ebt_mark_m.c, net/bridge/netfilter/ebtable_nat.c, net/decnet/netfilter/dn_rtmsg.c, init/main.c, scripts/kconfig/qconf.cc, , as member of class ConfigItemdrivers/usb/host/ehci-hcd.c, drivers/usb/gadget/ether.c, drivers/usb/gadget/net2280.c, drivers/usb/gadget/goku_udc.c, drivers/usb/gadget/zero.c, drivers/usb/gadget/dummy_hcd.c, drivers/usb/gadget/inode.c, drivers/media/dvb/frontends/grundig_29504-401.c, crypto/tcrypt.c, crypto/khazad.c, crypto/digest.c, crypto/des.c, crypto/md4.c, crypto/md5.c, crypto/tea.c, crypto/serpent.c, crypto/blowfish.c, crypto/sha1.c, crypto/crypto_null.c, crypto/crc32c.c, crypto/deflate.c, crypto/cast5.c, crypto/cast6.c, crypto/sha256.c, crypto/sha512.c, crypto/twofish.c, kernel/futex.c, init/main.c, net/ipv4/netfilter/ipt_recent.c, drivers/i2c/chips/w83781d.c, drivers/i2c/chips/w83627hf.c, drivers/media/video/saa7114.c,
- 'init_bictcp' : 'stack', # net/ipv4/tcp_input.c,
- 'init_buffer_head' : 'other', # fs/buffer.c,
- 'init_conntrack' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c,
- 'init_fpu': 'interrupt', # include/asm-i386/i387.h,
- 'init_new_context': 'interrupt', # include/asm-alpha/mmu_context.h, include/asm-i386/mmu_context.h,
- 'init_page_buffers' : 'other', # fs/buffer.c,
- 'init_westwood' : 'stack', # net/ipv4/tcp_input.c,
- 'inode_add_bytes' : 'other', # fs/stat.c, include/linux/fs.h,
- 'inode_change_ok': 'other', # fs/attr.c, include/linux/fs.h,
- 'inode_has_buffers' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'inode_setattr': 'other', # fs/attr.c, include/linux/fs.h,
- 'inode_sub_bytes' : 'other', # fs/stat.c, include/linux/fs.h,
- 'inode_times_differ' : 'other', # fs/inode.c,
- 'inode_update_time' : 'other', # fs/inode.c, include/linux/fs.h,
- 'insert_vm_struct': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'install_arg_page': 'other', # fs/exec.c, include/linux/mm.h,
- 'internal_add_timer' : 'other', # kernel/timer.c,
- 'invalid_dpte_no_dismiss_10_' : 'interrupt', #
- 'invalidate_inode_buffers' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'invert_tuple' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c,
- 'invert_tuplepr' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack.h,
- 'io_schedule' : 'other', # kernel/sched.c, include/linux/sched.h,
- 'ip_append_data' : 'stack', # net/ipv4/ip_output.c,
- 'ip_append_page' : 'stack', # net/ipv4/ip_output.c,
- 'ip_build_and_send_pkt' : 'stack', # net/ipv4/ip_output.c,
- 'ip_cmsg_recv': 'stack', # net/ipv4/ip_sockglue.c,
- 'ip_cmsg_send' : 'stack', # net/ipv4/ip_sockglue.c,
- 'ip_confirm' : 'stack', # net/ipv4/netfilter/ip_conntrack_standalone.c,
- 'ip_conntrack': 'other', # include/linux/netfilter_ipv4/ip_conntrack.h,
- 'ip_conntrack_alter_reply' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack.h,
- 'ip_conntrack_defrag' : 'stack', # net/ipv4/netfilter/ip_conntrack_standalone.c,
- 'ip_conntrack_find_get' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_core.h,
- 'ip_conntrack_get' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack.h,
- 'ip_conntrack_in' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_core.h,
- 'ip_conntrack_local' : 'stack', # net/ipv4/netfilter/ip_conntrack_standalone.c,
- 'ip_conntrack_tuple_taken' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack.h,
- 'ip_conntrack_unexpect_related' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_helper.h,
- 'ip_ct_find_helper' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_helper.h,
- 'ip_ct_find_proto' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack_core.h,
- 'ip_ct_gather_frags' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack.h,
- 'ip_ct_refresh' : 'stack', # net/ipv4/netfilter/ip_conntrack_core.c, include/linux/netfilter_ipv4/ip_conntrack.h,
- 'ip_defrag' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_evictor' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_fast_csum' : 'stack', # arch/alpha/lib/checksum.c, include/asm-alpha/checksum.h,
- 'ip_finish_output' : 'stack', # net/ipv4/ip_output.c,
- 'ip_finish_output2' : 'stack', # net/ipv4/ip_output.c,
- 'ip_frag_create' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_frag_destroy' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_frag_intern' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_frag_queue' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_frag_reasm' : 'stack', # net/ipv4/ip_fragment.c,
- 'ip_local_deliver' : 'stack', # net/ipv4/ip_input.c,
- 'ip_local_deliver_finish' : 'stack', # net/ipv4/ip_input.c,
- 'ip_map_lookup' : 'stack', # net/sunrpc/svcauth_unix.c,
- 'ip_map_put' : 'stack', # net/sunrpc/svcauth_unix.c,
- 'ip_mc_drop_socket' : 'stack', # net/ipv4/igmp.c, net/ipv4/af_inet.c, include/linux/igmp.h,
- 'ip_nat_fn' : 'stack', # net/ipv4/netfilter/ip_nat_standalone.c,
- 'ip_nat_out' : 'stack', # net/ipv4/netfilter/ip_nat_standalone.c,
- 'ip_nat_rule_find' : 'stack', # net/ipv4/netfilter/ip_nat_rule.c, include/linux/netfilter_ipv4/ip_nat_rule.h,
- 'ip_nat_setup_info' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat.h,
- 'ip_nat_used_tuple' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat.h,
- 'ip_output' : 'stack', # net/ipv4/ip_output.c,
- 'ip_push_pending_frames' : 'stack', # net/ipv4/ip_output.c,
- 'ip_queue_xmit' : 'stack', # net/ipv4/ip_output.c,
- 'ip_rcv' : 'stack', # net/ipv4/ip_input.c,
- 'ip_rcv_finish' : 'stack', # net/ipv4/ip_input.c,
- 'ip_refrag' : 'stack', # net/ipv4/netfilter/ip_conntrack_standalone.c,
- 'ip_route_input' : 'stack', # net/ipv4/route.c,
- 'ip_route_input_slow': 'stack', # net/ipv4/route.c,
- 'ip_route_output_flow' : 'stack', # net/ipv4/route.c,
- 'ip_send_check' : 'stack', # net/ipv4/ip_output.c,
- 'ip_tables': 'other', #
- 'ipq_kill' : 'stack', # net/ipv4/ip_fragment.c,
- 'ipqhashfn' : 'stack', # net/ipv4/ip_fragment.c,
- 'ipt_do_table' : 'stack', # net/ipv4/netfilter/ip_tables.c, include/linux/netfilter_ipv4/ip_tables.h,
- 'ipt_find_target_lock' : 'stack', # net/ipv4/netfilter/ip_tables.c, include/linux/netfilter_ipv4/ip_tables.h, include/linux/netfilter.h,
- 'ipt_hook' : 'stack', # net/ipv4/netfilter/iptable_filter.c, net/ipv4/netfilter/iptable_raw.c,
- 'ipt_local_hook' : 'stack', # net/ipv4/netfilter/iptable_mangle.c,
- 'ipt_local_out_hook' : 'stack', # net/ipv4/netfilter/iptable_filter.c,
- 'ipt_route_hook' : 'stack', # net/ipv4/netfilter/iptable_mangle.c,
- 'iptable_filter': 'other', #
- 'iptable_mangle': 'other', #
- 'iptable_nat': 'other', #
- 'iput' : 'other', # fs/inode.c, include/linux/fs.h,
- 'ipv4_sabotage_in' : 'stack', # net/bridge/br_netfilter.c,
- 'ipv4_sabotage_out' : 'stack', # net/bridge/br_netfilter.c,
- 'irq_entries_start': 'interrupt', #
- 'is_bad_inode' : 'other', # fs/bad_inode.c, include/linux/fs.h,
- 'it_real_fn': 'other', # kernel/itimer.c, include/linux/timer.h,
- 'jbd': 'other', #
- 'juk': 'other', #
- 'kded_kmilod.so': 'other', #
- 'kdeinit': 'other', #
- 'kernel_read': 'other', # fs/exec.c, include/linux/fs.h,
- 'kfree' : 'buffer', # mm/slab.c, include/linux/slab.h,
- 'kfree_skbmem' : 'buffer', # net/core/skbuff.c, include/linux/skbuff.h,
- 'kill_fasync': 'other', # fs/fcntl.c, include/linux/fs.h,
- 'kill_proc_info' : 'other', # kernel/signal.c, include/linux/sched.h,
- 'kill_something_info' : 'other', # kernel/signal.c,
- 'kmap': 'buffer', # include/asm-i386/highmem.h,
- 'kmap_atomic': 'buffer', # include/linux/highmem.h, include/asm-i386/highmem.h,
- 'kmap_high': 'buffer', # mm/highmem.c,
- 'kmem_cache_alloc' : 'buffer', # mm/slab.c, include/linux/slab.h,
- 'kmem_cache_free' : 'buffer', # mm/slab.c, include/linux/slab.h,
- 'kmem_flagcheck' : 'buffer', # mm/slab.c,
- 'kmem_freepages' : 'buffer', # mm/slab.c,
- 'kmem_getpages' : 'buffer', # mm/slab.c,
- 'kobject_get' : 'other', # lib/kobject.c, include/linux/kobject.h,
- 'kobject_put' : 'other', # lib/kobject.c, include/linux/kobject.h,
- 'kref_get': 'other', # lib/kref.c, include/linux/kref.h,
- 'kscd': 'other', #
- 'ksoftirqd' : 'interrupt', # kernel/softirq.c,
- 'ksysguardd': 'other', #
- 'kthread_should_stop' : 'other', # kernel/kthread.c, include/linux/kthread.h,
- 'kunmap': 'buffer', # include/linux/highmem.h, include/asm-i386/highmem.h,
- 'kunmap_atomic': 'buffer', # include/linux/highmem.h, include/asm-i386/highmem.h,
- 'kunmap_high': 'buffer', # mm/highmem.c,
- 'kwrapper': 'other', #
- 'ld-2.3.2.so': 'other', #
- 'lease_get_mtime' : 'other', # fs/locks.c, include/linux/fs.h,
- 'libORBit-2.so.0.0.0': 'other', #
- 'libX11.so.6.2': 'other', #
- 'libXext.so.6.4': 'other', #
- 'libXft.so.2.1.1': 'other', #
- 'libXrender.so.1.2.2': 'other', #
- 'libacl.so.1.1.0': 'other', #
- 'libarts.so': 'other', #
- 'libartsdsp.so.0.0.0': 'other', #
- 'libartsflow.so.1.0.0': 'other', #
- 'libartsmidi.so.0.0.0': 'other', #
- 'libattr.so.1.1.0': 'other', #
- 'libc-2.3.2.so' : 'user',
- 'libcdaudio.so': 'other', #
- 'libcrypt-2.3.2.so': 'other', #
- 'libcrypto.so.0.9.7': 'other', #
- 'libdb3.so.3.0.2': 'other', #
- 'libdl-2.3.2.so': 'other', #
- 'libgcc_s.so.1': 'other', #
- 'libgconf-2.so.4.1.0': 'other', #
- 'libgcrypt.so.11.1.1': 'other', #
- 'libgdk-1.2.so.0.9.1': 'other', #
- 'libgdk-x11-2.0.so.0.400.13': 'other', #
- 'libgfx_gtk.so': 'other', #
- 'libgkgfx.so': 'other', #
- 'libgklayout.so': 'other', #
- 'libglib-1.2.so.0.0.10': 'other', #
- 'libglib-2.0.so.0.400.8': 'other', #
- 'libgnutls.so.11.1.16': 'other', #
- 'libgobject-2.0.so.0.400.8': 'other', #
- 'libgthread-2.0.so.0.400.8': 'other', #
- 'libgtk-x11-2.0.so.0.400.13': 'other', #
- 'libhtmlpars.so': 'other', #
- 'libimglib2.so': 'other', #
- 'libkdecore.so.4.2.0': 'other', #
- 'libkdefx.so.4.2.0': 'other', #
- 'libkdeinit_kded.so': 'other', #
- 'libkdeinit_kdesktop.so': 'other', #
- 'libkdeinit_kicker.so': 'other', #
- 'libkdeinit_klauncher.so': 'other', #
- 'libkdeinit_klipper.so': 'other', #
- 'libkdeui.so.4.2.0': 'other', #
- 'libksgrd.so.1.2.0': 'other', #
- 'libm-2.3.2.so': 'other', #
- 'libmcop.so.1.0.0': 'other', #
- 'libmcop_mt.so.1.0.0': 'other', #
- 'libmikmod.so': 'other', #
- 'libmpg123.so': 'other', #
- 'libncurses.so.5.4': 'other', #
- 'libnecko.so': 'other', #
- 'libnsl-2.3.2.so': 'other', #
- 'libnspr4.so': 'other', #
- 'libnss_compat-2.3.2.so': 'other', #
- 'libnss_files-2.3.2.so': 'other', #
- 'libnss_nis-2.3.2.so': 'other', #
- 'libpcre.so.3.10.0': 'other', #
- 'libplc4.so': 'other', #
- 'libplds4.so': 'other', #
- 'libpref.so': 'other', #
- 'libpthread-0.10.so': 'user',
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libpthread-0.60.so': 'other', #
- 'libqt-mt.so.3.3.3': 'other', #
- 'libqtmcop.so.1.0.0': 'other', #
- 'librdf.so': 'other', #
- 'libresolv-2.3.2.so': 'other', #
- 'librt-2.3.2.so': 'other', #
- 'libstdc++.so.5.0.7': 'other', #
- 'libtasn1.so.2.0.10': 'other', #
- 'libuconv.so': 'other', #
- 'libwidget_gtk2.so': 'other', #
- 'libwrap.so.0.7.6': 'other', #
- 'libxmms.so.1.3.1': 'other', #
- 'libxpcom.so': 'other', #
- 'link_path_walk' : 'other', # fs/namei.c,
- 'll_back_merge_fn' : 'other', # drivers/block/ll_rw_blk.c,
- 'll_front_merge_fn' : 'other', # drivers/block/ll_rw_blk.c,
- 'll_merge_requests_fn' : 'other', # drivers/block/ll_rw_blk.c,
- 'll_rw_block' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'llc_rcv': 'stack', # net/llc/llc_input.c,
- 'llc_sap_find': 'stack', # net/llc/llc_core.c,
- 'load_balance' : 'other', # kernel/sched.c,
- 'load_balance_newidle' : 'other', # kernel/sched.c,
- 'load_elf_binary': 'other', # fs/binfmt_elf.c, fs/binfmt_elf.c,
- 'load_elf_interp': 'other', # fs/binfmt_elf.c,
- 'load_script': 'other', # fs/binfmt_script.c,
- 'local_bh_enable' : 'interrupt', # kernel/softirq.c, include/linux/interrupt.h,
- 'lock_sock' : 'stack', # net/core/sock.c,
- 'lockfile-create': 'other', #
- 'lockfile-remove': 'other', #
- 'locks_remove_flock' : 'other', # fs/locks.c, include/linux/fs.h,
- 'locks_remove_posix' : 'other', # fs/locks.c, include/linux/fs.h,
- 'lookup_create': 'other', # fs/namei.c, include/linux/dcache.h,
- 'lookup_hash': 'other', # fs/namei.c, include/linux/namei.h,
- 'lookup_mnt' : 'other', # fs/namespace.c, include/linux/dcache.h,
- 'loop' : 'interrupt', #
- 'loopback_xmit': 'driver',
- 'lru_add_drain' : 'buffer', # mm/swap.c, include/linux/swap.h,
- 'lru_cache_add' : 'buffer', # mm/swap.c,
- 'lru_cache_add_active': 'buffer', # mm/swap.c,
- 'lru_put_front' : 'other', # fs/nfsd/nfscache.c,
- 'ls': 'driver', # drivers/fc4/fc.c,
- 'mail': 'other', #
- 'mapping_tagged' : 'buffer', # mm/page-writeback.c, include/linux/fs.h,
- 'mark_buffer_dirty' : 'other', # fs/buffer.c,
- 'mark_buffer_dirty_inode' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'mark_offset_pmtmr': 'interrupt', #
- 'mark_page_accessed' : 'buffer', # mm/swap.c,
- 'mask_and_ack_level_ioapic_vector': 'interrupt', # include/asm-i386/io_apic.h,
- 'math_state_restore': 'interrupt', #
- 'mawk': 'other', #
- 'max_sane_readahead': 'buffer', # mm/readahead.c, include/linux/mm.h,
- 'max_select_fd': 'other', # fs/select.c,
- 'may_open': 'other', # fs/namei.c, include/linux/fs.h,
- 'memcmp' : 'copy', # lib/string.c,
- 'memcpy' : 'copy', # lib/string.c, arch/alpha/lib/memcpy.c, arch/alpha/kernel/alpha_ksyms.c, include/asm-alpha/string.h, include/asm-alpha/string.h,
- 'memcpy_fromiovec': 'copy', # net/core/iovec.c, include/linux/socket.h,
- 'memcpy_fromiovecend': 'copy', # net/core/iovec.c, include/linux/socket.h,
- 'memcpy_toiovec' : 'copy', # net/core/iovec.c, include/linux/socket.h,
- 'meminfo_read_proc': 'other', # fs/proc/proc_misc.c,
- 'memmove' : 'copy', # lib/string.c, include/asm-alpha/string.h,
- 'mempool_alloc' : 'buffer', # mm/mempool.c, include/linux/mempool.h,
- 'mempool_alloc_slab' : 'buffer', # mm/mempool.c, include/linux/mempool.h,
- 'mempool_free' : 'buffer', # mm/mempool.c, include/linux/mempool.h,
- 'mempool_free_slab' : 'buffer', # mm/mempool.c, include/linux/mempool.h,
- 'memscan' : 'copy', # lib/string.c,
- 'mkdir': 'other', #
- 'mm_alloc': 'buffer', # kernel/fork.c, include/linux/sched.h,
- 'mm_init': 'driver', # drivers/block/umem.c, kernel/fork.c,
- 'mm_release': 'other', # kernel/fork.c, include/linux/sched.h,
- 'mmput': 'other', # kernel/fork.c, include/linux/sched.h,
- 'mod_timer' : 'other', # kernel/timer.c, include/linux/timer.h,
- 'move_addr_to_user' : 'copy', # net/socket.c, include/linux/socket.h,
- 'move_one_page': 'buffer', # mm/mremap.c,
- 'move_vma': 'buffer', # mm/mremap.c,
- 'mpage_alloc' : 'other', # fs/mpage.c,
- 'mpage_bio_submit' : 'other', # fs/mpage.c,
- 'mpage_end_io_write' : 'other', # fs/mpage.c,
- 'mpage_readpage': 'other', # fs/mpage.c, include/linux/mpage.h,
- 'mpage_readpages': 'other', # fs/mpage.c, include/linux/mpage.h,
- 'mpage_writepage' : 'other', # fs/mpage.c,
- 'mpage_writepages' : 'other', # fs/mpage.c, include/linux/mpage.h,
- 'mv': 'other', #
- 'n_tty_chars_in_buffer': 'driver', # drivers/char/n_tty.c,
- 'n_tty_receive_buf': 'driver', # drivers/char/n_tty.c,
- 'n_tty_receive_room': 'driver', # drivers/char/n_tty.c,
- 'need_resched': 'driver', # include/linux/sched.h, drivers/char/tipar.c,
- 'neigh_lookup': 'stack', # net/core/neighbour.c,
- 'neigh_periodic_timer': 'stack', # net/core/neighbour.c,
- 'neigh_resolve_output' : 'stack', # net/core/neighbour.c,
- 'neigh_timer_handler': 'stack', # net/core/neighbour.c, net/core/neighbour.c,
- 'neigh_update': 'stack', # net/core/neighbour.c,
- 'net_rx_action' : 'driver', # net/core/dev.c,
- 'net_tx_action' : 'driver', # net/core/dev.c,
- 'netif_receive_skb' : 'driver', # net/core/dev.c, include/linux/netdevice.h,
- 'netif_rx' : 'driver', # net/core/dev.c, include/linux/netdevice.h,
- 'netperf' : 'user',
- 'netserver': 'user',
- 'new_inode' : 'other', # fs/inode.c, include/linux/fs.h,
- 'next_signal' : 'other', # kernel/signal.c,
- 'next_thread': 'other', # kernel/exit.c,
- 'nf_hook_slow' : 'stack', # net/core/netfilter.c, include/linux/netfilter.h,
- 'nf_iterate' : 'stack', # net/core/netfilter.c,
- 'nfs3svc_decode_commitargs' : 'other', # fs/nfsd/nfs3xdr.c, include/linux/nfsd/xdr3.h,
- 'nfs3svc_decode_writeargs' : 'other', # fs/nfsd/nfs3xdr.c, include/linux/nfsd/xdr3.h,
- 'nfs3svc_encode_commitres' : 'other', # fs/nfsd/nfs3xdr.c, include/linux/nfsd/xdr3.h,
- 'nfs3svc_encode_writeres' : 'other', # fs/nfsd/nfs3xdr.c, include/linux/nfsd/xdr3.h,
- 'nfs3svc_release_fhandle' : 'other', # fs/nfsd/nfs3xdr.c, include/linux/nfsd/xdr3.h,
- 'nfsd' : 'other', # fs/nfsd/nfssvc.c, fs/nfsd/nfssvc.c,
- 'nfsd3_proc_commit' : 'other', # fs/nfsd/nfs3proc.c,
- 'nfsd3_proc_write' : 'other', # fs/nfsd/nfs3proc.c,
- 'nfsd_acceptable' : 'other', # fs/nfsd/nfsfh.c,
- 'nfsd_cache_append' : 'other', # fs/nfsd/nfscache.c, fs/nfsd/nfscache.c,
- 'nfsd_cache_lookup' : 'other', # fs/nfsd/nfscache.c, include/linux/nfsd/cache.h,
- 'nfsd_cache_update' : 'other', # fs/nfsd/nfscache.c, include/linux/nfsd/cache.h,
- 'nfsd_close' : 'other', # fs/nfsd/vfs.c, include/linux/nfsd/nfsd.h,
- 'nfsd_commit' : 'other', # fs/nfsd/vfs.c, include/linux/nfsd/nfsd.h,
- 'nfsd_dispatch' : 'other', # fs/nfsd/nfssvc.c, include/linux/nfsd/nfsd.h,
- 'nfsd_open' : 'other', # fs/nfsd/vfs.c, include/linux/nfsd/nfsd.h,
- 'nfsd_permission' : 'other', # fs/nfsd/vfs.c, include/linux/nfsd/nfsd.h,
- 'nfsd_setuser' : 'other', # fs/nfsd/auth.c, include/linux/nfsd/auth.h,
- 'nfsd_sync' : 'other', # fs/nfsd/vfs.c,
- 'nfsd_write' : 'other', # fs/nfsd/vfs.c, include/linux/nfsd/nfsd.h,
- 'no_pm_change_10_' : 'interrupt', #
- 'no_quad' : 'interrupt', #
- 'nonseekable_open' : 'other', # fs/open.c, include/linux/fs.h,
- 'normal_int' : 'other', #
- 'normal_poll': 'driver', # drivers/char/n_tty.c,
- 'note_interrupt': 'interrupt', #
- 'notifier_call_chain': 'other', # kernel/sys.c, include/linux/notifier.h,
- 'notify_change': 'other', # fs/attr.c, include/linux/fs.h,
- 'nr_blockdev_pages': 'other', # fs/block_dev.c, include/linux/blkdev.h,
- 'nr_free_pages': 'buffer', # mm/page_alloc.c, include/linux/swap.h,
- 'nr_running': 'other', # kernel/sched.c, include/linux/sched.h,
- 'ns83820': 'driver',
- 'ns83820_do_isr' : 'driver',
- 'ns83820_hard_start_xmit' : 'driver',
- 'ns83820_irq' : 'driver',
- 'ns83820_rx_kick' : 'driver',
- 'ns83820_tx_watch' : 'driver',
- 'ns83821_do_isr' : 'driver', #
- 'ns83821_hard_start_xmit' : 'driver', #
- 'ns83821_irq' : 'driver', #
- 'ns83821_rx_kick' : 'driver', #
- 'number' : 'interrupt', # lib/vsprintf.c, arch/alpha/kernel/srm_env.c,
- 'nvidia': 'other', #
- 'old_mmap': 'interrupt', #
- 'open_exec': 'other', # fs/exec.c, include/linux/fs.h,
- 'open_namei' : 'user', # fs/namei.c, include/linux/fs.h, used to by syscall
- 'open_private_file' : 'user', # fs/file_table.c, include/linux/fs.h, used to by syscall
- 'oprofile': 'other', #
- 'oprofiled': 'other', #
- 'osf_brk': 'user',
- 'osf_mmap': 'user',
- 'osf_sigprocmask' : 'other', #
- 'osync_buffers_list' : 'other', # fs/buffer.c,
- 'padzero': 'other', # fs/binfmt_elf.c,
- 'page_add_anon_rmap' : 'buffer', # mm/rmap.c, include/linux/rmap.h,
- 'page_add_file_rmap': 'buffer', # mm/rmap.c, include/linux/rmap.h,
- 'page_address': 'buffer', # mm/highmem.c, include/linux/mm.h, include/linux/mm.h, include/linux/mm.h,
- 'page_cache_readahead': 'buffer', # mm/readahead.c, include/linux/mm.h,
- 'page_fault': 'interrupt', #
- 'page_remove_rmap': 'buffer', # mm/rmap.c, include/linux/rmap.h,
- 'page_slot': 'buffer', # mm/highmem.c,
- 'page_symlink' : 'other', # fs/namei.c, include/linux/fs.h,
- 'page_waitqueue' : 'buffer', # mm/filemap.c,
- 'pagevec_lookup': 'buffer', # mm/swap.c, include/linux/pagevec.h,
- 'pagevec_lookup_tag' : 'buffer', # mm/swap.c, include/linux/pagevec.h,
- 'pal_dtb_ldq' : 'interrupt', #
- 'pal_itb_ldq' : 'interrupt', #
- 'pal_post_interrupt' : 'interrupt', #
- 'path_lookup' : 'user', # fs/namei.c, used to by syscall
- 'path_release' : 'user', # fs/namei.c, include/linux/namei.h, used to by syscall
- 'pci_bus_read_config_word': 'driver', # include/linux/pci.h,
- 'pci_conf1_read': 'driver', #
- 'pci_dac_dma_supported' : 'driver', # arch/alpha/kernel/pci_iommu.c, include/asm-alpha/pci.h,
- 'pci_map_page' : 'driver', # arch/alpha/kernel/pci_iommu.c, include/asm-generic/pci-dma-compat.h, include/asm-alpha/pci.h,
- 'pci_map_single' : 'driver', # arch/alpha/kernel/pci_iommu.c, arch/alpha/kernel/pci-noop.c, include/asm-generic/pci-dma-compat.h, drivers/net/wan/wanxl.c, drivers/net/wan/wanxl.c, drivers/scsi/aic7xxx/aic79xx_osm.h, drivers/scsi/aic7xxx/aic7xxx_osm.h, include/asm-alpha/pci.h,
- 'pci_map_single_1' : 'driver', # arch/alpha/kernel/pci_iommu.c,
- 'pci_read': 'driver', #
- 'pci_unmap_page' : 'driver', # arch/alpha/kernel/pci_iommu.c, include/asm-generic/pci-dma-compat.h, include/asm-alpha/pci.h,
- 'pci_unmap_single' : 'driver', # arch/alpha/kernel/pci_iommu.c, arch/alpha/kernel/pci-noop.c, include/asm-generic/pci-dma-compat.h, drivers/scsi/aic7xxx/aic79xx_osm.h, drivers/scsi/aic7xxx/aic7xxx_osm.h, include/asm-alpha/pci.h,
- 'percpu_counter_mod' : 'buffer', # mm/swap.c, include/linux/percpu_counter.h,
- 'perl': 'other', #
- 'permission' : 'user', # fs/namei.c, include/linux/fs.h, used to be syscall
- 'pfifo_fast_dequeue' : 'stack', # net/sched/sch_generic.c,
- 'pfifo_fast_enqueue' : 'stack', # net/sched/sch_generic.c,
- 'pgd_alloc': 'buffer', # arch/alpha/mm/init.c, include/asm-alpha/pgalloc.h, include/asm-i386/pgalloc.h,
- 'pgd_ctor': 'buffer', # include/asm-i386/pgtable.h,
- 'pgd_free': 'buffer', # include/asm-alpha/pgalloc.h, include/asm-i386/pgalloc.h,
- 'pipe_ioctl': 'other', # fs/pipe.c,
- 'pipe_new': 'other', # fs/pipe.c, include/linux/pipe_fs_i.h,
- 'pipe_poll': 'other', # fs/pipe.c,
- 'pipe_read': 'other', # fs/pipe.c,
- 'pipe_read_release': 'other', # fs/pipe.c,
- 'pipe_readv': 'other', # fs/pipe.c,
- 'pipe_release': 'other', # fs/pipe.c,
- 'pipe_wait': 'other', # fs/pipe.c, include/linux/pipe_fs_i.h,
- 'pipe_write': 'other', # fs/pipe.c,
- 'pipe_write_fasync': 'other', # fs/pipe.c,
- 'pipe_write_release': 'other', # fs/pipe.c,
- 'pipe_writev': 'other', # fs/pipe.c,
- 'pipefs_delete_dentry': 'other', # fs/pipe.c,
- 'place_in_hashes' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat_core.h,
- 'poll_freewait' : 'other', # fs/select.c, include/linux/poll.h,
- 'poll_idle': 'idle', #
- 'poll_initwait' : 'other', # fs/select.c, include/linux/poll.h,
- 'portmap': 'other', #
- 'preempt_schedule': 'other', # kernel/sched.c, include/linux/preempt.h,
- 'prep_new_page' : 'buffer', # mm/page_alloc.c,
- 'prepare_binprm': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'prepare_to_copy': 'interrupt', # include/asm-alpha/processor.h, include/asm-i386/processor.h,
- 'prepare_to_wait' : 'other', # kernel/fork.c,
- 'prio_tree_expand': 'buffer', # mm/prio_tree.c,
- 'prio_tree_insert': 'buffer', # mm/prio_tree.c,
- 'prio_tree_remove': 'buffer', # mm/prio_tree.c,
- 'prio_tree_replace': 'buffer', # mm/prio_tree.c,
- 'proc_alloc_inode': 'other', # fs/proc/inode.c,
- 'proc_calc_metrics': 'other', # fs/proc/proc_misc.c,
- 'proc_delete_inode': 'other', # fs/proc/inode.c,
- 'proc_destroy_inode': 'other', # fs/proc/inode.c,
- 'proc_file_read': 'other', # fs/proc/generic.c, fs/proc/generic.c,
- 'proc_get_inode': 'other', # fs/proc/inode.c, include/linux/proc_fs.h,
- 'proc_lookup': 'other', # fs/proc/generic.c, include/linux/proc_fs.h,
- 'proc_pid_unhash': 'other', # fs/proc/base.c, include/linux/proc_fs.h,
- 'proc_pident_lookup': 'other', # fs/proc/base.c,
- 'proc_root_lookup': 'other', # fs/proc/root.c,
- 'process_backlog' : 'stack', # net/core/dev.c,
- 'process_timeout': 'other', # kernel/timer.c,
- 'profile_hit': 'other', #
- 'profile_hook': 'other', # kernel/profile.c, include/linux/profile.h, include/linux/profile.h,
- 'profile_munmap': 'other', #
- 'profile_task_exit': 'other', #
- 'profile_tick': 'other', #
- 'pskb_expand_head': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
- 'pte_alloc_map': 'buffer', # mm/memory.c,
- 'pte_alloc_one': 'buffer', # include/asm-alpha/pgalloc.h, include/asm-i386/pgalloc.h,
- 'ptrace_cancel_bpt' : 'user', # arch/alpha/kernel/ptrace.c, arch/alpha/kernel/proto.h, used to be syscall
- 'pty_chars_in_buffer': 'driver', # drivers/char/pty.c,
- 'pty_open': 'driver', # drivers/char/pty.c,
- 'pty_write_room': 'driver', # drivers/char/pty.c,
- 'put_device' : 'driver', # drivers/base/core.c, include/linux/device.h,
- 'put_files_struct': 'other', # kernel/exit.c,
- 'put_filp': 'other', # fs/file_table.c, include/linux/file.h,
- 'put_io_context' : 'driver', # drivers/block/ll_rw_blk.c, include/linux/blkdev.h,
- 'put_unused_fd' : 'other', # fs/open.c,
- 'qdisc_restart' : 'stack', # net/sched/sch_generic.c,
- 'queue_delayed_work': 'other', # kernel/workqueue.c,
- 'queue_me': 'other', # kernel/futex.c,
- 'quiesce' : 'idle', #
- 'radix_tree_delete': 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_extend': 'other', # lib/radix-tree.c,
- 'radix_tree_gang_lookup': 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_gang_lookup_tag' : 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_insert' : 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_lookup' : 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_node_alloc' : 'other', # lib/radix-tree.c,
- 'radix_tree_preload' : 'other', # lib/radix-tree.c, lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_tag_clear' : 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_tag_set' : 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'radix_tree_tagged' : 'other', # lib/radix-tree.c, include/linux/radix-tree.h,
- 'raise_softirq' : 'interrupt', # kernel/softirq.c,
- 'raise_softirq_irqoff' : 'interrupt', # kernel/softirq.c,
- 'rb_erase' : 'buffer', # lib/rbtree.c, include/linux/rbtree.h,
- 'rb_insert_color' : 'buffer', # lib/rbtree.c, include/linux/rbtree.h,
- 'rb_next' : 'buffer', # lib/rbtree.c, fs/jffs2/nodelist.h, include/linux/rbtree.h,
- 'rb_prev' : 'buffer', # lib/rbtree.c, fs/jffs2/nodelist.h, include/linux/rbtree.h,
- 'rcu_check_callbacks' : 'other', # kernel/rcupdate.c, include/linux/rcupdate.h,
- 'rcu_check_quiescent_state' : 'other', # kernel/rcupdate.c,
- 'rcu_do_batch' : 'other', # kernel/rcupdate.c,
- 'rcu_process_callbacks' : 'other', # kernel/rcupdate.c,
- 'rcu_start_batch' : 'other', # kernel/rcupdate.c,
- 'read_block_bitmap' : 'other', # fs/udf/balloc.c, fs/ext2/balloc.c, fs/ext3/balloc.c,
- 'real_lookup': 'other', # fs/namei.c,
- 'rebalance_tick' : 'other', # kernel/sched.c,
- 'recalc_bh_state' : 'other', # fs/buffer.c,
- 'recalc_sigpending' : 'interrupt', # kernel/signal.c, include/linux/sched.h,
- 'recalc_sigpending_tsk' : 'interrupt', # kernel/signal.c,
- 'recalc_task_prio' : 'other', # kernel/sched.c,
- 'release_blocks' : 'other', # fs/ext2/balloc.c,
- 'release_pages' : 'buffer', # mm/swap.c, include/linux/pagemap.h,
- 'release_sock' : 'stack', # net/core/sock.c,
- 'release_task': 'other', # kernel/exit.c, include/linux/sched.h,
- 'release_thread': 'interrupt', # arch/alpha/kernel/process.c, include/asm-um/processor-generic.h, include/asm-alpha/processor.h, include/asm-i386/processor.h,
- 'release_x86_irqs': 'interrupt', # include/asm-i386/irq.h,
- 'remove_arg_zero': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'remove_from_page_cache': 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'remove_suid' : 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'remove_vm_struct': 'buffer', # mm/mmap.c,
- 'remove_wait_queue' : 'other', # kernel/fork.c,
- 'resched_task' : 'other', # kernel/sched.c,
- 'reserve_blocks' : 'other', # fs/ext2/balloc.c,
- 'restore_all' : 'other', #
- 'restore_fpu': 'interrupt', # include/asm-i386/i387.h,
- 'restore_i387': 'interrupt', # include/asm-i386/i387.h,
- 'restore_i387_fxsave': 'interrupt', #
- 'restore_sigcontext' : 'interrupt', # arch/alpha/kernel/signal.c,
- 'resume_kernel': 'interrupt', #
- 'resume_userspace': 'other', #
- 'ret_from_exception': 'other', #
- 'ret_from_intr': 'interrupt', #
- 'ret_from_reschedule' : 'other', #
- 'ret_from_sys_call' : 'user', # arch/alpha/kernel/signal.c, used to be syscall
- 'rm': 'other', #
- 'rm_from_queue': 'other', # kernel/signal.c,
- 'rmqueue_bulk' : 'buffer', # mm/page_alloc.c,
- 'rt_check_expire': 'stack', # net/ipv4/route.c,
- 'rt_hash_code' : 'stack', # net/ipv4/route.c,
- 'rt_intern_hash': 'stack', # net/ipv4/route.c, net/ipv4/route.c,
- 'rt_may_expire': 'stack', # net/ipv4/route.c,
- 'rtc_enable_disable' : 'interrupt', # arch/alpha/kernel/irq_alpha.c,
- 'rti_to_kern' : 'interrupt', #
- 'rti_to_user' : 'user', # used to be syscall
- 'run-parts': 'other', #
- 'run_local_timers' : 'other', # kernel/timer.c, include/linux/timer.h,
- 'run_timer_softirq' : 'other', # kernel/timer.c,
- 'rx_action' : 'driver', # drivers/net/ns83820.c,
- 'rx_irq' : 'driver', # drivers/net/ns83820.c,
- 'rx_refill_atomic' : 'driver', # drivers/net/ns83820.c,
- 'save_i387': 'interrupt', # include/asm-i386/i387.h,
- 'save_i387_fxsave': 'interrupt', #
- 'sched_clock' : 'user', # arch/alpha/kernel/time.c, include/linux/sched.h, used to be syscall
- 'sched_exit': 'other', # kernel/sched.c,
- 'sched_fork': 'other', # kernel/sched.c,
- 'schedule' : 'other', # kernel/sched.c, include/linux/sched.h,
- 'schedule_delayed_work': 'other', # kernel/workqueue.c,
- 'schedule_tail': 'other', # kernel/sched.c,
- 'schedule_timeout' : 'other', # kernel/timer.c, sound/oss/cs4281/cs4281m.c,
- 'scheduler_tick' : 'other', # kernel/sched.c, include/linux/sched.h,
- 'scsi_add_timer' : 'other', # drivers/scsi/scsi_error.c,
- 'scsi_alloc_sgtable' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_cmd_ioctl': 'driver', # drivers/block/scsi_ioctl.c, include/linux/blkdev.h,
- 'scsi_decide_disposition' : 'other', # drivers/scsi/scsi_error.c, drivers/scsi/scsi_priv.h,
- 'scsi_delete_timer' : 'other', # drivers/scsi/scsi_error.c,
- 'scsi_device_unbusy' : 'other', # drivers/scsi/scsi_lib.c, drivers/scsi/scsi_priv.h,
- 'scsi_dispatch_cmd' : 'other', # drivers/scsi/scsi.c, drivers/scsi/scsi_priv.h,
- 'scsi_done' : 'other', # drivers/scsi/scsi.c, drivers/scsi/scsi_priv.h,
- 'scsi_end_request' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_finish_command' : 'other', # drivers/scsi/scsi.c,
- 'scsi_free_sgtable' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_get_command' : 'other', # drivers/scsi/scsi.c,
- 'scsi_init_cmd_errh' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_init_io' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_io_completion' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_mod': 'driver',
- 'scsi_next_command' : 'other', # drivers/scsi/scsi_lib.c, drivers/scsi/scsi_priv.h,
- 'scsi_prep_fn' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_put_command' : 'other', # drivers/scsi/scsi.c,
- 'scsi_request_fn' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_run_queue' : 'other', # drivers/scsi/scsi_lib.c,
- 'scsi_softirq' : 'other', # drivers/scsi/scsi.c,
- 'sd_init_command' : 'other', # drivers/scsi/sd.c, drivers/scsi/sd.c,
- 'sd_rw_intr' : 'other', # drivers/scsi/sd.c, drivers/scsi/sd.c,
- 'search_binary_handler': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'second_overflow': 'interrupt', # kernel/timer.c,
- 'secure_tcp_sequence_number' : 'stack', # drivers/char/random.c, include/linux/random.h,
- 'sed': 'other', #
- 'select_bits_alloc': 'other', # fs/compat.c, fs/select.c,
- 'select_bits_free': 'other', # fs/compat.c, fs/select.c,
- 'send_group_sig_info': 'other', # kernel/signal.c, include/linux/sched.h,
- 'send_signal' : 'user', # kernel/signal.c, used to be syscall
- 'seq_read': 'other', # fs/seq_file.c, include/linux/seq_file.h,
- 'set_bh_page' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'set_binfmt': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'set_brk': 'user', # fs/binfmt_aout.c, fs/binfmt_elf.c,
- 'set_current_groups' : 'other', # kernel/sys.c, include/linux/sched.h,
- 'set_page_address': 'buffer', # mm/highmem.c, include/linux/mm.h, include/linux/mm.h, include/linux/mm.h,
- 'set_page_dirty': 'buffer', # mm/page-writeback.c,
- 'set_slab_attr' : 'buffer', # mm/slab.c,
- 'set_task_comm': 'other', #
- 'setfl' : 'user', # fs/fcntl.c, used to be syscall
- 'setup_arg_pages': 'other', # fs/exec.c, include/linux/binfmts.h,
- 'setup_frame' : 'interrupt', # arch/alpha/kernel/signal.c,
- 'setup_sigcontext' : 'interrupt', # arch/alpha/kernel/signal.c,
- 'show_stat': 'other', # fs/proc/proc_misc.c,
- 'si_swapinfo': 'buffer', # mm/swapfile.c, include/linux/swap.h, include/linux/swap.h,
- 'sig_ignored' : 'other', # kernel/signal.c,
- 'signal_wake_up' : 'other', # kernel/signal.c, include/linux/sched.h,
- 'sigprocmask' : 'other', # kernel/signal.c, include/linux/signal.h,
- 'single_open': 'other', # fs/seq_file.c, include/linux/seq_file.h,
- 'sk_alloc' : 'buffer', # net/core/sock.c,
- 'sk_free' : 'buffer', # net/core/sock.c,
- 'sk_reset_timer' : 'buffer', # net/core/sock.c,
- 'sk_stop_timer' : 'buffer', # net/core/sock.c,
- 'sk_stream_kill_queues' : 'buffer', # net/core/stream.c,
- 'sk_stream_mem_schedule' : 'buffer', # net/core/stream.c,
- 'sk_stream_rfree' : 'buffer', # net/core/stream.c,
- 'sk_stream_wait_close' : 'buffer', # net/core/stream.c,
- 'sk_stream_wait_memory' : 'buffer', # net/core/stream.c,
- 'sk_stream_write_space' : 'buffer', # net/core/stream.c,
- 'sk_wait_data' : 'buffer', # net/core/sock.c,
- 'skb_checksum': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_checksum_help': 'stack', # net/core/dev.c, include/linux/netdevice.h,
- 'skb_clone' : 'buffer', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_copy_and_csum_bits' : 'copy', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_copy_and_csum_datagram':'copy',
- 'skb_copy_bits' : 'copy', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_copy_datagram_iovec' : 'copy', # net/core/datagram.c, include/linux/skbuff.h,
- 'skb_dequeue' : 'buffer', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_drop_fraglist' : 'buffer', # net/core/skbuff.c,
- 'skb_free_datagram' : 'buffer', # net/core/datagram.c, include/linux/skbuff.h,
- 'skb_queue_head': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_queue_tail' : 'buffer', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_read_and_csum_bits' : 'buffer', # net/sunrpc/xprt.c,
- 'skb_recv_datagram' : 'buffer', # net/core/datagram.c, include/linux/skbuff.h,
- 'skb_release_data' : 'buffer', # net/core/skbuff.c, net/core/dev.c,
- 'skip_atoi': 'other', # lib/vsprintf.c,
- 'slab_destroy' : 'buffer', # mm/slab.c,
- 'smp_apic_timer_interrupt': 'interrupt', #
- 'smp_percpu_timer_interrupt' : 'interrupt', # arch/alpha/kernel/smp.c, arch/alpha/kernel/proto.h,
- 'snap_rcv': 'stack', # net/802/psnap.c,
- 'sock_aio_read' : 'stack', # net/socket.c, net/socket.c,
- 'sock_aio_write': 'stack', # net/socket.c, net/socket.c,
- 'sock_alloc' : 'user', # net/socket.c, include/linux/net.h, used to be syscall
- 'sock_alloc_inode' : 'user', # net/socket.c, used to be syscall
- 'sock_alloc_send_pskb' : 'user', # net/core/sock.c, used to be syscall
- 'sock_alloc_send_skb' : 'user', # net/core/sock.c, used to be syscall
- 'sock_close' : 'user', # net/socket.c, net/socket.c, used to be syscall
- 'sock_common_recvmsg' : 'user', # net/core/sock.c, used to be syscall
- 'sock_def_readable' : 'user', # net/core/sock.c, used to be syscall
- 'sock_def_wakeup' : 'user', # net/core/sock.c, used to be syscall
- 'sock_destroy_inode' : 'user', # net/socket.c, used to be syscall
- 'sock_disable_timestamp' : 'user', # net/core/sock.c, used to be syscall
- 'sock_fasync' : 'user', # net/socket.c, net/socket.c, used to be syscall
- 'sock_init_data': 'stack', # net/core/sock.c,
- 'sock_ioctl': 'stack', # net/socket.c, net/socket.c,
- 'sock_map_fd' : 'user', # net/socket.c, include/linux/net.h, used to be syscall
- 'sock_poll' : 'user', # net/socket.c, net/socket.c, used to be syscall
- 'sock_readv': 'stack', # net/socket.c, net/socket.c,
- 'sock_readv_writev' : 'user', # net/socket.c, include/linux/net.h, used to be syscall
- 'sock_recvmsg' : 'user', # net/socket.c, include/linux/net.h, used to be syscall
- 'sock_release' : 'user', # net/socket.c, include/linux/net.h, used to be syscall
- 'sock_rfree' : 'user', # net/core/sock.c, used to be syscall
- 'sock_sendmsg' : 'user', # net/socket.c, include/linux/net.h, used to be syscall
- 'sock_wfree' : 'user', # net/core/sock.c, used to be syscall
- 'sock_wmalloc' : 'user', # net/core/sock.c, used to be syscall
- 'sock_writev' : 'user', # net/socket.c, net/socket.c, used to be syscall
- 'sockfd_lookup' : 'user', # net/socket.c, net/sched/sch_atm.c, include/linux/net.h, used to be syscall
- 'sockfs_delete_dentry' : 'user', # net/socket.c, used to be syscall
- 'sort': 'driver', # drivers/scsi/eata.c, drivers/scsi/u14-34f.c,
- 'split_vma': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'sprintf' : 'other', # lib/vsprintf.c, drivers/isdn/hardware/eicon/platform.h,
- 'sshd': 'other', #
- 'steal_locks': 'other', # fs/locks.c, include/linux/fs.h,
- 'strcmp' : 'copy', # lib/string.c,
- 'strlcpy': 'other', # lib/string.c,
- 'strlen' : 'copy', # lib/string.c, include/asm-alpha/string.h,
- 'strncpy' : 'copy', # lib/string.c, include/asm-alpha/string.h,
- 'strncpy_from_user': 'copy', # include/asm-alpha/uaccess.h, include/asm-i386/uaccess.h,
- 'strnlen_user': 'other', # include/asm-alpha/uaccess.h, include/asm-i386/uaccess.h,
- 'submit_bh' : 'buffer', # fs/buffer.c, include/linux/buffer_head.h,
- 'submit_bio' : 'other', # drivers/block/ll_rw_blk.c, include/linux/fs.h,
- 'sunrpc': 'other', #
- 'svc_authenticate' : 'other', # net/sunrpc/svcauth.c, include/linux/sunrpc/svcauth.h,
- 'svc_authorise' : 'other', # net/sunrpc/svcauth.c, include/linux/sunrpc/svcauth.h,
- 'svc_deferred_dequeue' : 'other', # net/sunrpc/svcsock.c, net/sunrpc/svcsock.c,
- 'svc_drop' : 'other', # net/sunrpc/svcsock.c, include/linux/sunrpc/svcsock.h,
- 'svc_expkey_lookup' : 'other', # fs/nfsd/export.c,
- 'svc_export_put' : 'other', # fs/nfsd/export.c, include/linux/nfsd/export.h,
- 'svc_process' : 'other', # net/sunrpc/svc.c, include/linux/sunrpc/svc.h,
- 'svc_recv' : 'other', # net/sunrpc/svcsock.c, include/linux/sunrpc/svcsock.h,
- 'svc_reserve' : 'other', # net/sunrpc/svcsock.c, include/linux/sunrpc/svc.h,
- 'svc_send' : 'other', # net/sunrpc/svcsock.c, include/linux/sunrpc/svcsock.h,
- 'svc_sendto' : 'other', # net/sunrpc/svcsock.c,
- 'svc_sock_enqueue' : 'other', # net/sunrpc/svcsock.c,
- 'svc_sock_release' : 'other', # net/sunrpc/svcsock.c,
- 'svc_udp_data_ready' : 'other', # net/sunrpc/svcsock.c, net/sunrpc/svcsock.c,
- 'svc_udp_recvfrom' : 'other', # net/sunrpc/svcsock.c, net/sunrpc/svcsock.c,
- 'svc_udp_sendto' : 'other', # net/sunrpc/svcsock.c, net/sunrpc/svcsock.c,
- 'svc_write_space' : 'other', # net/sunrpc/svcsock.c,
- 'svcauth_unix_accept' : 'other', # net/sunrpc/svcauth_unix.c,
- 'svcauth_unix_release' : 'other', # net/sunrpc/svcauth_unix.c,
- 'switch_names': 'other', # fs/dcache.c,
- 'swpctx_cont' : 'other', #
- 'sync_buffer' : 'other', # fs/buffer.c, drivers/oprofile/buffer_sync.c,
- 'sync_dirty_buffer' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'sync_inode' : 'other', # fs/fs-writeback.c, include/linux/fs.h,
- 'sync_mapping_buffers' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'sync_sb_inodes': 'other', # fs/fs-writeback.c,
- 'sync_supers': 'other', # fs/super.c, include/linux/fs.h,
- 'sys_accept' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_access': 'other', # fs/open.c, include/linux/syscalls.h,
- 'sys_brk': 'user', # mm/mmap.c, mm/nommu.c, include/linux/syscalls.h,
- 'sys_clock_gettime': 'user', # kernel/posix-timers.c, include/linux/syscalls.h,
- 'sys_clone': 'user', # include/asm-i386/unistd.h,
- 'sys_close' : 'user', # fs/open.c, include/linux/syscalls.h, used to be syscall
- 'sys_dup2': 'user', # fs/fcntl.c, include/linux/syscalls.h,
- 'sys_execve': 'user', # include/asm-alpha/unistd.h, include/asm-i386/unistd.h,
- 'sys_exit_group': 'user', # kernel/exit.c, include/linux/syscalls.h,
- 'sys_fcntl' : 'user', # fs/fcntl.c, include/linux/syscalls.h, used to be syscall
- 'sys_fcntl64': 'user', # fs/fcntl.c, include/linux/syscalls.h,
- 'sys_fstat64': 'user', # fs/stat.c, include/linux/syscalls.h,
- 'sys_ftruncate': 'user', # fs/open.c, include/linux/syscalls.h,
- 'sys_futex': 'user', # kernel/futex.c, include/linux/syscalls.h,
- 'sys_getdents64': 'user',
- 'sys_geteuid': 'other', # kernel/timer.c, include/linux/syscalls.h,
- 'sys_getgroups': 'user', # kernel/sys.c, include/linux/syscalls.h,
- 'sys_getpid': 'user', # kernel/timer.c, include/linux/syscalls.h,
- 'sys_getppid': 'other', # kernel/timer.c, include/linux/syscalls.h,
- 'sys_getrlimit': 'other', # kernel/sys.c, include/linux/syscalls.h,
- 'sys_getsockname' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_gettimeofday' : 'user', # kernel/time.c, include/linux/syscalls.h, used to be syscall
- 'sys_getuid': 'user', # kernel/timer.c, include/linux/syscalls.h,
- 'sys_getxpid' : 'user', # used to be syscall
- 'sys_int_21' : 'interrupt', #
- 'sys_int_22' : 'interrupt', #
- 'sys_interrupt' : 'interrupt', #
- 'sys_ioctl': 'user', # fs/ioctl.c, drivers/block/cciss.c, include/linux/syscalls.h,
- 'sys_kill' : 'user', # kernel/signal.c, include/linux/syscalls.h, used to be syscall
- 'sys_llseek': 'other', # fs/read_write.c, include/linux/syscalls.h,
- 'sys_lseek': 'user', # fs/read_write.c, include/linux/syscalls.h,
- 'sys_mkdir': 'user', # fs/namei.c, include/linux/syscalls.h,
- 'sys_mmap2': 'user', # include/asm-i386/unistd.h,
- 'sys_mremap': 'user', # mm/mremap.c, include/linux/syscalls.h,
- 'sys_munmap': 'user', # mm/mmap.c, mm/nommu.c, include/linux/syscalls.h,
- 'sys_nanosleep': 'user', # kernel/timer.c, include/linux/syscalls.h,
- 'sys_newlstat' : 'user', # fs/stat.c, include/linux/syscalls.h, used to be syscall
- 'sys_newstat' : 'user', # fs/stat.c, include/linux/syscalls.h, used to be syscall
- 'sys_newuname': 'user', # kernel/sys.c, include/linux/syscalls.h,
- 'sys_open' : 'user', # fs/open.c, include/linux/syscalls.h, used to be syscall
- 'sys_pipe': 'interrupt', # include/asm-i386/unistd.h,
- 'sys_poll' : 'user', # fs/select.c, include/linux/syscalls.h, used to be syscall
- 'sys_read' : 'user', # fs/read_write.c, include/linux/syscalls.h, used to be syscall
- 'sys_recv' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_recvfrom' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_rename': 'other', # fs/namei.c, include/linux/syscalls.h,
- 'sys_rmdir': 'user',
- 'sys_rt_sigaction': 'user', # arch/alpha/kernel/signal.c, kernel/signal.c, include/asm-alpha/unistd.h, include/asm-i386/unistd.h,
- 'sys_rt_sigprocmask': 'user', # kernel/signal.c, include/linux/syscalls.h,
- 'sys_select': 'user', # fs/select.c, include/linux/syscalls.h,
- 'sys_send' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_sendto' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_set_thread_area': 'user', #
- 'sys_setitimer': 'user', # kernel/itimer.c, include/linux/syscalls.h,
- 'sys_shutdown' : 'user', # net/socket.c, include/linux/syscalls.h, used to be syscall
- 'sys_sigreturn' : 'user', # used to be syscall
- 'sys_sigsuspend' : 'user', # used to be syscall
- 'sys_socketcall': 'user', # net/socket.c, include/linux/syscalls.h,
- 'sys_stat64': 'user', # fs/stat.c, include/linux/syscalls.h,
- 'sys_time': 'other', # kernel/time.c, include/linux/syscalls.h,
- 'sys_times': 'other', # kernel/sys.c, include/linux/syscalls.h,
- 'sys_umask': 'other', # kernel/sys.c, include/linux/syscalls.h,
- 'sys_unlink': 'other', # fs/namei.c, include/linux/syscalls.h,
- 'sys_wait4': 'user', # kernel/exit.c, include/linux/syscalls.h,
- 'sys_waitpid': 'user', # kernel/exit.c, include/linux/syscalls.h,
- 'sys_write' : 'user', # fs/read_write.c, include/linux/syscalls.h, used to be syscall
- 'sys_writev' : 'user', # fs/read_write.c, include/linux/syscalls.h, used to be syscall
- 'syscall_call': 'other', #
- 'syscall_exit': 'other', #
- 'sysguard_panelapplet.so': 'other', #
- 'syslogd': 'other', #
- 'system_call': 'interrupt', #
- 'tail': 'other', #
- 'task_curr' : 'other', # kernel/sched.c, include/linux/sched.h,
- 'task_rq_lock' : 'other', # kernel/sched.c,
- 'task_timeslice' : 'other', # kernel/sched.c,
- 'tasklet_action' : 'other', # kernel/softirq.c,
- 'tcp_accept' : 'stack', # net/ipv4/tcp.c,
- 'tcp_ack' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_ack_no_tstamp' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_ack_update_window' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_bucket_destroy' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_check_req' : 'stack', # net/ipv4/tcp_minisocks.c,
- 'tcp_child_process' : 'stack', # net/ipv4/tcp_minisocks.c,
- 'tcp_clean_rtx_queue' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_clear_xmit_timers' : 'stack', # net/ipv4/tcp_timer.c,
- 'tcp_close' : 'stack', # net/ipv4/tcp.c,
- 'tcp_close_state' : 'stack', # net/ipv4/tcp.c,
- 'tcp_copy_to_iovec' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_create_openreq_child' : 'stack', # net/ipv4/tcp_minisocks.c,
- 'tcp_current_mss': 'other', #
- 'tcp_cwnd_application_limited': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_data_queue' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_delete_keepalive_timer' : 'stack', # net/ipv4/tcp_timer.c,
- 'tcp_destroy_sock' : 'stack', # net/ipv4/tcp.c,
- 'tcp_enter_quickack_mode' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_event_data_recv' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_fin' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_fixup_rcvbuf' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_fixup_sndbuf' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_fragment': 'stack', # net/ipv4/tcp_output.c,
- 'tcp_incr_quickack' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_init_buffer_space' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_init_metrics' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_init_xmit_timers' : 'stack', # net/ipv4/tcp_timer.c,
- 'tcp_invert_tuple' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_tcp.c,
- 'tcp_make_synack' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_new' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_tcp.c,
- 'tcp_new_space' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_ofo_queue' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_packet' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_tcp.c,
- 'tcp_parse_options' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_pkt_to_tuple' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_tcp.c,
- 'tcp_poll' : 'stack', # net/ipv4/tcp.c,
- 'tcp_prequeue_process' : 'stack', # net/ipv4/tcp.c,
- 'tcp_push_one' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_put_port' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_queue_skb' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_rcv_established' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_rcv_rtt_update' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_rcv_space_adjust' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_rcv_state_process' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_recvmsg' : 'stack', # net/ipv4/tcp.c,
- 'tcp_reset_keepalive_timer' : 'stack', # net/ipv4/tcp_timer.c,
- 'tcp_rtt_estimator' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_send_ack' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_send_delayed_ack' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_send_fin' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_sendmsg' : 'stack', # net/ipv4/tcp.c,
- 'tcp_set_skb_tso_segs': 'other', #
- 'tcp_shutdown' : 'stack', # net/ipv4/tcp.c,
- 'tcp_sync_mss' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_time_wait' : 'stack', # net/ipv4/tcp_minisocks.c,
- 'tcp_transmit_skb' : 'stack', # net/ipv4/tcp_output.c,
- 'tcp_trim_head': 'stack', # net/ipv4/tcp_output.c,
- 'tcp_tso_acked': 'stack', #
- 'tcp_tw_schedule' : 'stack', # net/ipv4/tcp_minisocks.c,
- 'tcp_unhash' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_update_metrics' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_urg' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_v4_checksum_init':'stack',
- 'tcp_v4_conn_request' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_connect': 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_destroy_sock' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_do_rcv' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_hnd_req' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_init_sock': 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_rcv' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_rebuild_header' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_route_req' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_search_req' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_send_check' : 'stack', # net/ipv4/tcp_ipv4.c, net/ipv4/tcp_ipv4.c,
- 'tcp_v4_send_synack' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_syn_recv_sock' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_synq_add' : 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_vegas_init' : 'stack', # net/ipv4/tcp_input.c,
- 'tcp_write_xmit' : 'stack', # net/ipv4/tcp_output.c,
- 'test_clear_page_dirty': 'buffer', # mm/page-writeback.c, include/linux/page-flags.h,
- 'test_clear_page_writeback' : 'buffer', # mm/page-writeback.c, include/linux/page-flags.h,
- 'test_set_page_writeback' : 'buffer', # mm/page-writeback.c, include/linux/page-flags.h,
- 'timer_interrupt' : 'interrupt', # arch/alpha/kernel/time.c, arch/alpha/kernel/proto.h,
- 'tr': 'other', #
- 'truncate_complete_page': 'buffer', # mm/truncate.c,
- 'truncate_inode_pages': 'buffer', # mm/truncate.c, include/linux/mm.h,
- 'try_to_wake_up' : 'other', # kernel/sched.c,
- 'tsunami_readb': 'driver',
- 'tsunami_readl' : 'interrupt', # include/asm-alpha/core_tsunami.h,
- 'tsunami_update_irq_hw' : 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'tsunami_writeb': 'driver',
- 'tsunami_writel' : 'interrupt', # include/asm-alpha/core_tsunami.h,
- 'tty_hung_up_p': 'driver', # drivers/char/tty_io.c, include/linux/tty.h,
- 'tty_ldisc_deref': 'other', #
- 'tty_ldisc_ref_wait': 'other', #
- 'tty_ldisc_try': 'other', #
- 'tty_open': 'driver', # drivers/char/tty_io.c, drivers/char/tty_io.c, drivers/net/wan/sdla_chdlc.c,
- 'tty_poll': 'driver', # drivers/char/tty_io.c, drivers/char/tty_io.c,
- 'tty_write': 'driver', # drivers/char/tty_io.c, drivers/char/tty_io.c,
- 'udp_checksum_init' : 'stack', # net/ipv4/udp.c,
- 'udp_ioctl': 'stack', # net/ipv4/udp.c,
- 'udp_packet' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_udp.c,
- 'udp_pkt_to_tuple' : 'stack', # net/ipv4/netfilter/ip_conntrack_proto_udp.c,
- 'udp_push_pending_frames' : 'stack', # net/ipv4/udp.c,
- 'udp_queue_rcv_skb' : 'stack', # net/ipv4/udp.c,
- 'udp_rcv' : 'stack', # net/ipv4/udp.c,
- 'udp_recvmsg': 'stack', # net/ipv4/udp.c,
- 'udp_sendmsg' : 'stack', # net/ipv4/udp.c,
- 'udp_sendpage' : 'stack', # net/ipv4/udp.c,
- 'udp_v4_get_port': 'stack', # net/ipv4/udp.c,
- 'udp_v4_lookup_longway' : 'stack', # net/ipv4/udp.c,
- 'unalign_trap_cont' : 'alignment',
- 'unalign_trap_count' : 'alignment',
- 'undo_switch_stack' : 'other', #
- 'unix': 'other', #
- 'unlock_buffer' : 'other', # fs/buffer.c,
- 'unlock_new_inode': 'other', # fs/inode.c, include/linux/fs.h,
- 'unlock_page' : 'buffer', # mm/filemap.c,
- 'unmap_mapping_range': 'buffer', # mm/memory.c, include/linux/mm.h,
- 'unmap_page_range': 'buffer', # mm/memory.c,
- 'unmap_region': 'buffer', # mm/mmap.c,
- 'unmap_underlying_metadata' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'unmap_vma': 'buffer', # mm/mmap.c,
- 'unmap_vma_list': 'buffer', # mm/mmap.c,
- 'unmap_vmas': 'buffer', # mm/memory.c, include/linux/mm.h,
- 'unmask_IO_APIC_irq': 'interrupt', #
- 'unmask_IO_APIC_vector': 'interrupt', #
- 'unqueue_me': 'other', # kernel/futex.c,
- 'unshare_files': 'other', # kernel/fork.c, include/linux/fs.h,
- 'up' : 'driver', # arch/alpha/kernel/semaphore.c, include/asm-alpha/semaphore.h, net/ipv4/netfilter/ip_tables.c, net/ipv6/netfilter/ip6_tables.c, drivers/video/atafb.c, include/asm-alpha/semaphore.h,
- 'update_atime': 'other', # fs/inode.c, include/linux/fs.h,
- 'update_one_process' : 'other', # kernel/timer.c,
- 'update_process_times' : 'other', # kernel/timer.c, include/linux/sched.h,
- 'update_wall_time' : 'other', # kernel/timer.c,
- 'update_wall_time_one_tick' : 'other', # kernel/timer.c,
- 'usbcore': 'other', #
- 'vfs_create': 'other', # fs/namei.c, include/linux/fs.h,
- 'vfs_fstat': 'other', # fs/stat.c, include/linux/fs.h,
- 'vfs_getattr' : 'user', # fs/stat.c, include/linux/fs.h, used to be syscall
- 'vfs_llseek': 'other', # fs/read_write.c, include/linux/fs.h,
- 'vfs_lstat' : 'user', # fs/stat.c, include/linux/fs.h, used to be syscall
- 'vfs_mkdir': 'other', # fs/namei.c, include/linux/fs.h,
- 'vfs_permission' : 'user', # fs/namei.c, include/linux/fs.h, used to be syscall
- 'vfs_read' : 'user', # fs/read_write.c, include/linux/fs.h, used to be syscall
- 'vfs_rename': 'other', # fs/namei.c, include/linux/fs.h,
- 'vfs_rename_other': 'other', # fs/namei.c,
- 'vfs_stat' : 'user', # fs/stat.c, include/linux/fs.h, used to be syscall
- 'vfs_unlink': 'other', # fs/namei.c, include/linux/fs.h,
- 'vfs_write' : 'user', # fs/read_write.c, include/linux/fs.h, used to be syscall
- 'vfs_writev' : 'user', # fs/read_write.c, include/linux/fs.h, used to be syscall
- 'vma_adjust': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'vma_link': 'buffer', # mm/mmap.c,
- 'vma_merge': 'buffer', # mm/mmap.c, include/linux/mm.h,
- 'vma_prio_tree_add': 'buffer', # mm/prio_tree.c, include/linux/mm.h,
- 'vma_prio_tree_insert': 'buffer', # mm/prio_tree.c, include/linux/mm.h,
- 'vma_prio_tree_remove': 'buffer', # mm/prio_tree.c, include/linux/mm.h,
- 'vmstat_open': 'other', # fs/proc/proc_misc.c,
- 'vmstat_show': 'buffer', # mm/page_alloc.c,
- 'vmtruncate': 'buffer', # mm/nommu.c, mm/memory.c, include/linux/mm.h,
- 'vsnprintf' : 'other', # lib/vsprintf.c, include/linux/kernel.h,
- 'vsprintf' : 'driver', # lib/vsprintf.c, arch/alpha/boot/main.c, drivers/scsi/aic7xxx_old/aic7xxx_proc.c, include/linux/kernel.h,
- 'wait_for_completion': 'driver', # drivers/acorn/block/mfmhd.c, kernel/sched.c,
- 'wait_on_page_writeback_range' : 'buffer', # mm/filemap.c,
- 'wait_task_zombie': 'other', # kernel/exit.c,
- 'wake_futex': 'other', # kernel/futex.c,
- 'wake_up_buffer' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'wake_up_inode' : 'other', # fs/inode.c, include/linux/writeback.h,
- 'wake_up_new_task': 'other', #
- 'wake_up_page' : 'buffer', # mm/filemap.c,
- 'wake_up_process' : 'other', # kernel/sched.c,
- 'wake_up_state' : 'other', # kernel/sched.c,
- 'wb_timer_fn': 'buffer', # mm/page-writeback.c, mm/page-writeback.c,
- 'wc': 'other', #
- 'work_notifysig': 'other', #
- 'work_pending' : 'other', #
- 'work_resched': 'other', #
- 'worker_thread': 'other', # kernel/workqueue.c,
- 'write_boundary_block' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
- 'write_chan': 'driver', # drivers/char/n_tty.c,
- 'write_inode' : 'other', # fs/fs-writeback.c,
- 'write_null': 'driver', # drivers/char/mem.c,
- 'writeback_acquire': 'other', # fs/fs-writeback.c, include/linux/backing-dev.h,
- 'writeback_in_progress' : 'other', # fs/fs-writeback.c, include/linux/backing-dev.h,
- 'writeback_inodes': 'other', # fs/fs-writeback.c, include/linux/writeback.h,
- 'xdr_partial_copy_from_skb' : 'copy', # net/sunrpc/xdr.c, include/linux/sunrpc/xdr.h,
- 'xfrm_lookup' : 'stack', # net/xfrm/xfrm_policy.c,
- 'xmms': 'other', #
- 'zap_pmd_range': 'buffer', # mm/memory.c,
- 'zap_pte_range': 'buffer', # mm/memory.c,
- 'zone_statistics' : 'buffer', # mm/page_alloc.c,
- 'libaprutil-0.so.0' : 'user',
- 'libapr-0.so.0' : 'user',
- 'httpd' : 'user',
- 'do_tcp_sendpages': 'copy',
- 'tcp_setsockopt' : 'stack',
- 'sys_setsockopt' : 'stack',
- 'do_sendfile' : 'copy',
- 'ip_route_output_slow': 'stack',
- 'tcp_sendpage': 'copy',
- 'file_send_actor': 'copy',
- 'flush_tlb_page': 'buffer',
- 'sock_common_setsockopt': 'stack',
- 'sock_sendpage': 'copy',
-
-#
-# New functions
-#
-
- '__alloc_percpu': 'buffer', # mm/slab.c, include/linux/percpu.h,
- '__pskb_pull_tail': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
- '__reml': 'other', # arch/alpha/kernel/alpha_ksyms.c,
- '__tasklet_hi_schedule': 'interrupt', # kernel/softirq.c,
- '__tcp_checksum_complete_user': 'stack', # net/ipv4/tcp_input.c,
- '__tcp_v4_lookup_listener': 'stack', # net/ipv4/tcp_ipv4.c,
- '__tcp_v4_rehash': 'stack', # net/ipv4/tcp_ipv4.c,
- '__tcp_westwood_fast_bw': 'stack', # net/ipv4/tcp_input.c,
- '__tcp_westwood_slow_bw': 'stack', # net/ipv4/tcp_input.c,
- '__xfrm_policy_check': 'stack', # net/xfrm/xfrm_policy.c,
- 'alcor_disable_irq': 'interrupt', # arch/alpha/kernel/sys_alcor.c,
- 'alpha_read_fp_reg': 'other', # arch/alpha/lib/fpreg.c, arch/alpha/kernel/proto.h, arch/alpha/math-emu/math.c, include/asm-alpha/fpu.h,
- 'atkbd_probe': 'other', # drivers/input/keyboard/atkbd.c,
- 'background_writeout': 'buffer', # mm/page-writeback.c, mm/page-writeback.c,
- 'bad_page': 'buffer', # mm/page_alloc.c,
- 'batch_entropy_process': 'other', # drivers/char/random.c, drivers/char/random.c,
- 'block_hotplug_filter': 'driver', # drivers/block/genhd.c,
- 'brioctl_set': 'stack', # net/socket.c, include/linux/if_bridge.h,
- 'cdev_put': 'fs', # fs/char_dev.c, include/linux/cdev.h,
- 'change_protection': 'buffer', # mm/mprotect.c,
- 'check_timer_failed': 'interrupt', # kernel/timer.c,
- 'clipper_disable_irq': 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'clipper_enable_irq': 'interrupt', # arch/alpha/kernel/sys_dp264.c,
- 'count_active_tasks': 'interrupt', # kernel/timer.c,
- 'csum_ipv6_magic': 'stack', # include/asm-i386/checksum.h, include/asm-alpha/checksum.h,
- 'del_timer_sync': 'interrupt', # kernel/timer.c, include/linux/timer.h, include/linux/timer.h,
- 'dev_ifname': 'stack', # net/core/dev.c,
- 'dev_queue_xmit_nit': 'stack', # net/core/dev.c, include/linux/netdevice.h,
- 'dev_valid_name': 'stack', # net/core/dev.c,
- 'do_entDbg': 'interrupt', # arch/alpha/kernel/traps.c,
- 'do_proc_dointvec_jiffies_conv': 'interrupt', # kernel/sysctl.c,
- 'down_interruptible': 'interrupt', # arch/alpha/kernel/semaphore.c, include/asm-alpha/semaphore.h, include/asm-i386/semaphore.h, include/asm-alpha/semaphore.h, net/ipv4/netfilter/ip_tables.c, net/ipv6/netfilter/ip6_tables.c,
- 'drain_array': 'buffer', #
- 'drain_cpu_caches': 'buffer', # mm/slab.c,
- 'dummy_file_fcntl': 'other', # security/dummy.c,
- 'dummy_sem_semop': 'other', # security/dummy.c,
- 'emit_log_char': 'other', # kernel/printk.c,
- 'entDbg': 'interrupt', # arch/alpha/kernel/proto.h,
- 'entIF': 'interrupt', # arch/alpha/kernel/proto.h,
- 'eth_header_cache_update': 'stack', # net/ethernet/eth.c, include/linux/etherdevice.h,
- 'eth_header_parse': 'stack', # net/ethernet/eth.c, include/linux/etherdevice.h,
- 'ethtool_get_settings': 'stack', # net/core/ethtool.c,
- 'fifo_open': 'fs', # fs/fifo.c,
- 'find_trylock_page': 'buffer', # mm/filemap.c, include/linux/pagemap.h,
- 'find_undo': 'buffer', # ipc/sem.c,
- 'find_user': 'buffer', # kernel/user.c, include/linux/sched.h,
- 'flow_cache_cpu_prepare': 'stack', # net/core/flow.c,
- 'flow_cache_flush_per_cpu': 'stack', # net/core/flow.c,
- 'flow_cache_flush_tasklet': 'stack', # net/core/flow.c,
- 'flow_key_compare': 'stack', # net/core/flow.c,
- 'flush_icache_user_range': 'interrupt', # arch/alpha/kernel/smp.c, include/asm-alpha/cacheflush.h, include/asm-alpha/cacheflush.h, include/asm-i386/cacheflush.h,
- 'flush_tlb_mm': 'interrupt', # arch/alpha/kernel/smp.c, include/asm-alpha/tlbflush.h, include/asm-i386/tlbflush.h, include/asm-alpha/tlbflush.h, include/asm-i386/tlbflush.h,
- 'force_page_cache_readahead': 'buffer', # mm/readahead.c, include/linux/mm.h,
- 'free_percpu': 'buffer', # mm/slab.c, include/linux/percpu.h, include/linux/percpu.h,
- 'generic_file_sendfile': 'buffer', # mm/filemap.c, include/linux/fs.h,
- 'get_one_pte_map': 'buffer', # mm/mremap.c,
- 'gunzip': 'other', # lib/inflate.c,
- 'handle_ipi': 'interrupt', # arch/alpha/kernel/smp.c, arch/alpha/kernel/proto.h,
- 'input_devices_read': 'driver', # drivers/input/input.c,
- 'input_link_handle': 'driver', # drivers/input/input.c,
- 'input_register_device': 'driver', # drivers/input/input.c, include/linux/input.h,
- 'insb': 'driver', # arch/alpha/kernel/io.c, include/asm-alpha/io.h,
- 'insl': 'driver', # arch/alpha/kernel/io.c, include/asm-alpha/io.h, drivers/net/smc9194.c, drivers/net/smc9194.c,
- 'invalidate_bh_lru': 'fs', # fs/buffer.c,
- 'iommu_arena_alloc': 'interrupt', # arch/alpha/kernel/pci_iommu.c,
- 'iommu_arena_find_pages': 'interrupt', # arch/alpha/kernel/pci_iommu.c,
- 'iommu_arena_free': 'interrupt', # arch/alpha/kernel/pci_iommu.c,
- 'ip_compute_csum': 'stack', # arch/alpha/lib/checksum.c, include/asm-i386/checksum.h, include/asm-alpha/checksum.h,
- 'ip_getsockopt': 'stack', # net/ipv4/ip_sockglue.c,
- 'ip_mc_output': 'stack', # net/ipv4/ip_output.c,
- 'ip_options_compile': 'stack', # net/ipv4/ip_options.c,
- 'ip_rt_dump': 'stack', # net/ipv4/route.c,
- 'ipc_checkid': 'stack', # ipc/util.c, ipc/util.h,
- 'ipc_lock': 'stack', # ipc/util.c, ipc/util.h,
- 'ipc_unlock': 'stack', # ipc/util.c, ipc/util.h,
- 'ipcperms': 'stack', # ipc/util.c, ipc/util.h,
- 'ipi_flush_tlb_page': 'interrupt', # arch/alpha/kernel/smp.c,
- 'isp1020_intr_handler': 'other', # drivers/scsi/qlogicisp.c, drivers/scsi/qlogicisp.c,
- 'isp1020_queuecommand': 'other', # drivers/scsi/qlogicisp.c, drivers/scsi/qlogicisp.h,
- 'kernel_thread': 'interrupt', # include/asm-um/processor-generic.h, include/asm-alpha/processor.h, include/asm-i386/processor.h,
- 'kmem_find_general_cachep': 'buffer', # mm/slab.c,
- 'kmem_ptr_validate': 'buffer', # mm/slab.c,
- 'llc_mac_hdr_init': 'stack', # net/llc/llc_output.c, net/llc/llc_output.h,
- 'lock_rename': 'fs', # fs/namei.c, include/linux/namei.h,
- 'lookup_undo': 'stack', # ipc/sem.c,
- 'memcpy_tokerneliovec': 'stack', # net/core/iovec.c, include/linux/socket.h,
- 'migrate_task': 'other', # kernel/sched.c,
- 'net_ratelimit': 'stack', # net/core/utils.c, include/linux/net.h,
- 'netlink_release': 'stack', # net/netlink/netlink_dev.c, net/netlink/af_netlink.c,
- 'nf_log_packet': 'stack', # net/core/netfilter.c, include/linux/netfilter_logging.h, include/linux/netfilter.h,
- 'nf_queue': 'stack', # net/core/netfilter.c,
- 'nr_free_zone_pages': 'buffer', # mm/page_alloc.c,
- 'osf_writev': 'driver', # arch/alpha/kernel/osf_sys.c,
- 'pci_map_sg': 'driver', # arch/alpha/kernel/pci-noop.c, arch/alpha/kernel/pci_iommu.c, include/asm-generic/pci-dma-compat.h, include/asm-alpha/pci.h,
- 'pci_unmap_sg': 'driver', # arch/alpha/kernel/pci-noop.c, arch/alpha/kernel/pci_iommu.c, include/asm-generic/pci-dma-compat.h, include/asm-alpha/pci.h,
- 'pcibios_align_resource': 'driver', # arch/alpha/kernel/pci.c, include/linux/pci.h,
- 'pfifo_fast_requeue': 'stack', # net/sched/sch_generic.c,
- 'pointer_lock': 'interrupt', # arch/alpha/kernel/smp.c,
- 'posix_unblock_lock': 'fs', # fs/locks.c, include/linux/fs.h,
- 'prepare_timeout': 'interrupt', # ipc/mqueue.c,
- 'printk': 'other', # kernel/printk.c, drivers/md/raid6.h,
- 'process_mcheck_info': 'interrupt', # arch/alpha/kernel/irq_alpha.c, arch/alpha/kernel/proto.h,
- 'read_cache_pages': 'buffer', # mm/readahead.c, include/linux/pagemap.h,
- 'register_gifconf': 'stack', # net/core/dev.c, include/linux/netdevice.h,
- 'rwsem_down_read_failed': 'interrupt', # lib/rwsem.c, include/asm-alpha/rwsem.h,
- 'search_exception_tables': 'interrupt', # kernel/extable.c, include/linux/module.h,
- 'security_fixup_ops': 'other', # security/dummy.c, security/security.c,
- 'send_ipi_message': 'interrupt', # arch/alpha/kernel/smp.c,
- 'send_sig_info': 'interrupt', # kernel/signal.c, include/linux/sched.h,
- 'set_fs_altroot': 'fs', # fs/namei.c, include/linux/fs_struct.h,
- 'sg_classify': 'interrupt', # arch/alpha/kernel/pci_iommu.c,
- 'sg_fill': 'interrupt', # arch/alpha/kernel/pci_iommu.c,
- 'sk_common_release': 'stack', # net/core/sock.c,
- 'sk_stream_wait_connect': 'stack', # net/core/stream.c,
- 'skb_over_panic': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
- 'skb_under_panic': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
- 'smp_call_function_on_cpu': 'interrupt', # arch/alpha/kernel/smp.c, include/asm-alpha/smp.h, include/asm-alpha/smp.h,
- 'sock_def_write_space': 'stack', # net/core/sock.c,
- 'sock_getsockopt': 'stack', # net/core/sock.c,
- 'sock_wait_for_wmem': 'stack', # net/core/sock.c,
- 'srm_dispatch': 'other', #
- 'srm_fixup': 'other', # include/asm-alpha/console.h,
- 'stxcpy_aligned': 'buffer', #
- 'sys_capset': 'other', # kernel/capability.c, include/linux/syscalls.h,
- 'sys_fadvise64': 'buffer', # mm/fadvise.c, include/linux/syscalls.h,
- 'sys_fadvise64_64': 'buffer', # mm/fadvise.c, include/linux/syscalls.h,
- 'sys_newfstat': 'fs', # fs/stat.c, include/linux/syscalls.h,
- 'sys_semop': 'stack', # ipc/sem.c, include/linux/syscalls.h,
- 'sys_semtimedop': 'stack', # ipc/sem.c, include/linux/syscalls.h,
- 'sys_sendfile64': 'fs', # fs/read_write.c, include/linux/syscalls.h,
- 'sys_socketpair': 'stack', # net/socket.c, include/linux/syscalls.h,
- 'sys_vhangup': 'fs', # fs/open.c, include/linux/syscalls.h,
- 'tasklet_hi_action': 'interrupt', # kernel/softirq.c,
- 'tcp_ack_probe': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_advertise_mss': 'stack', # net/ipv4/tcp_output.c,
- 'tcp_enter_loss': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_fastretrans_alert': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_ioctl': 'stack', # net/ipv4/tcp.c,
- 'tcp_process_frto': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_rcv_synsent_state_process': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_recv_urg': 'stack', # net/ipv4/tcp.c,
- 'tcp_reset': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_retransmit_skb': 'stack', # net/ipv4/tcp_output.c,
- 'tcp_sacktag_write_queue': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_time_to_recover': 'stack', # net/ipv4/tcp_input.c,
- 'tcp_v4_err': 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_get_port': 'stack', # net/ipv4/tcp_ipv4.c,
- 'tcp_v4_lookup': 'stack', # net/ipv4/tcp_ipv4.c, net/ipv4/tcp_diag.c,
- 'tcp_v4_reselect_saddr': 'stack', # net/ipv4/tcp_ipv4.c,
- 'this_rq_lock': 'interrupt', #
- 'tr_source_route': 'stack', # net/802/tr.c, include/linux/trdevice.h,
- 'try_atomic_semop': 'stack', # ipc/sem.c,
- 'tsunami_outw': 'driver', #
- 'twothirdsMD4Transform': 'other', # drivers/char/random.c,
- 'unregister_netdevice': 'stack', # net/core/dev.c, include/linux/netdevice.h,
- 'update_queue': 'stack', # ipc/sem.c,
- 'vegas_cong_avoid': 'stack', # net/ipv4/tcp_input.c,
- 'vm_acct_memory': 'buffer', # mm/swap.c, include/linux/mman.h,
- 'vsscanf': 'other', # lib/vsprintf.c, include/linux/kernel.h,
- 'wait_for_packet': 'stack', # net/core/datagram.c,
- 'westwood_update_window': 'stack', # net/ipv4/tcp_input.c,
- 'within_one_quad': 'other', #
-}
-
-pc_categories_re = [
-# ( re.compile('.*'), 'other' )
-]
-
-def pc_categorize(symbol):
- from .categories import pc_categories, pc_categories_re
- if symbol in pc_categories:
- return pc_categories[symbol]
- for regexp, category in pc_categories_re:
- if regexp.match(symbol):
- return category
-
- return None
-
diff --git a/util/stats/chart.py b/util/stats/chart.py
deleted file mode 100644
index cc5eccf..0000000
--- a/util/stats/chart.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (c) 2005-2006 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-class ChartOptions(object):
- defaults = { 'chart_size' : (8, 4),
- 'figure_size' : [0.1, 0.1, 0.6, 0.85],
- 'title' : None,
- 'fig_legend' : True,
- 'legend' : None,
- 'legend_loc' : 'upper right',
- 'legend_size' : 6,
- 'colormap' : 'jet',
- 'xlabel' : None,
- 'ylabel' : None,
- 'xticks' : None,
- 'xsubticks' : None,
- 'yticks' : None,
- 'ylim' : None,
- }
-
- def __init__(self, options=None, **kwargs):
- self.init(options, **kwargs)
-
- def clear(self):
- self.options = {}
-
- def init(self, options=None, **kwargs):
- self.clear()
- self.update(options, **kwargs)
-
- def update(self, options=None, **kwargs):
- if options is not None:
- if not isinstance(options, ChartOptions):
- raise AttributeError(
- 'attribute options of type %s should be %s' %
- (type(options), ChartOptions))
- self.options.update(options.options)
-
- for key,value in kwargs.items():
- if key not in ChartOptions.defaults:
- raise AttributeError(
- "%s instance has no attribute '%s'" % (type(self), key))
- self.options[key] = value
-
- def __getattr__(self, attr):
- if attr in self.options:
- return self.options[attr]
-
- if attr in ChartOptions.defaults:
- return ChartOptions.defaults[attr]
-
- raise AttributeError("%s instance has no attribute '%s'" % (type(self), attr))
-
- def __setattr__(self, attr, value):
- if attr in ChartOptions.defaults:
- self.options[attr] = value
- else:
- super(ChartOptions, self).__setattr__(attr, value)
-
diff --git a/util/stats/db.py b/util/stats/db.py
deleted file mode 100644
index b6acf8d..0000000
--- a/util/stats/db.py
+++ /dev/null
@@ -1,434 +0,0 @@
-# Copyright (c) 2003-2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import MySQLdb, re, string
-
-def statcmp(a, b):
- v1 = a.split('.')
- v2 = b.split('.')
-
- last = min(len(v1), len(v2)) - 1
- for i,j in zip(v1[0:last], v2[0:last]):
- if i != j:
- return cmp(i, j)
-
- # Special compare for last element.
- if len(v1) == len(v2):
- return cmp(v1[last], v2[last])
- else:
- return cmp(len(v1), len(v2))
-
-class RunData:
- def __init__(self, row):
- self.run = int(row[0])
- self.name = row[1]
- self.user = row[2]
- self.project = row[3]
-
-class SubData:
- def __init__(self, row):
- self.stat = int(row[0])
- self.x = int(row[1])
- self.y = int(row[2])
- self.name = row[3]
- self.descr = row[4]
-
-class Data:
- def __init__(self, row):
- if len(row) != 5:
- raise 'stat db error'
- self.stat = int(row[0])
- self.run = int(row[1])
- self.x = int(row[2])
- self.y = int(row[3])
- self.data = float(row[4])
-
- def __repr__(self):
- return '''Data(['%d', '%d', '%d', '%d', '%f'])''' % ( self.stat,
- self.run, self.x, self.y, self.data)
-
-class StatData(object):
- def __init__(self, row):
- self.stat = int(row[0])
- self.name = row[1]
- self.desc = row[2]
- self.type = row[3]
- self.prereq = int(row[5])
- self.precision = int(row[6])
-
- from . import flags
- self.flags = 0
- if int(row[4]): self.flags |= flags.printable
- if int(row[7]): self.flags |= flags.nozero
- if int(row[8]): self.flags |= flags.nonan
- if int(row[9]): self.flags |= flags.total
- if int(row[10]): self.flags |= flags.pdf
- if int(row[11]): self.flags |= flags.cdf
-
- if self.type == 'DIST' or self.type == 'VECTORDIST':
- self.min = float(row[12])
- self.max = float(row[13])
- self.bktsize = float(row[14])
- self.size = int(row[15])
-
- if self.type == 'FORMULA':
- self.formula = self.db.allFormulas[self.stat]
-
-class Node(object):
- def __init__(self, name):
- self.name = name
- def __str__(self):
- return self.name
-
-class Result(object):
- def __init__(self, x, y):
- self.data = {}
- self.x = x
- self.y = y
-
- def __contains__(self, run):
- return run in self.data
-
- def __getitem__(self, run):
- if run not in self.data:
- self.data[run] = [ [ 0.0 ] * self.y for i in range(self.x) ]
- return self.data[run]
-
-class Database(object):
- def __init__(self):
- self.host = 'zizzer.pool'
- self.user = ''
- self.passwd = ''
- self.db = 'm5stats'
- self.cursor = None
-
- self.allStats = []
- self.allStatIds = {}
- self.allStatNames = {}
-
- self.allSubData = {}
-
- self.allRuns = []
- self.allRunIds = {}
- self.allRunNames = {}
-
- self.allFormulas = {}
-
- self.stattop = {}
- self.statdict = {}
- self.statlist = []
-
- self.mode = 'sum';
- self.runs = None
- self.ticks = None
- self.method = 'sum'
- self._method = type(self).sum
-
- def get(self, job, stat, system=None):
- run = self.allRunNames.get(str(job), None)
- if run is None:
- return None
-
- from .info import ProxyError, scalar, vector, value, values, total, len
- if system is None and hasattr(job, 'system'):
- system = job.system
-
- if system is not None:
- stat.system = self[system]
- try:
- if scalar(stat):
- return value(stat, run.run)
- if vector(stat):
- return values(stat, run.run)
- except ProxyError:
- return None
-
- return None
-
- def query(self, sql):
- self.cursor.execute(sql)
-
- def update_dict(self, dict):
- dict.update(self.stattop)
-
- def append(self, stat):
- statname = re.sub(':', '__', stat.name)
- path = string.split(statname, '.')
- pathtop = path[0]
- fullname = ''
-
- x = self
- while len(path) > 1:
- name = path.pop(0)
- if name not in x.__dict__:
- x.__dict__[name] = Node(fullname + name)
- x = x.__dict__[name]
- fullname = '%s%s.' % (fullname, name)
-
- name = path.pop(0)
- x.__dict__[name] = stat
-
- self.stattop[pathtop] = self.__dict__[pathtop]
- self.statdict[statname] = stat
- self.statlist.append(statname)
-
- def connect(self):
- # connect
- self.thedb = MySQLdb.connect(db=self.db,
- host=self.host,
- user=self.user,
- passwd=self.passwd)
-
- # create a cursor
- self.cursor = self.thedb.cursor()
-
- self.query('''select rn_id,rn_name,rn_sample,rn_user,rn_project
- from runs''')
- for result in self.cursor.fetchall():
- run = RunData(result);
- self.allRuns.append(run)
- self.allRunIds[run.run] = run
- self.allRunNames[run.name] = run
-
- self.query('select sd_stat,sd_x,sd_y,sd_name,sd_descr from subdata')
- for result in self.cursor.fetchall():
- subdata = SubData(result)
- if subdata.stat in self.allSubData:
- self.allSubData[subdata.stat].append(subdata)
- else:
- self.allSubData[subdata.stat] = [ subdata ]
-
- self.query('select * from formulas')
- for id,formula in self.cursor.fetchall():
- self.allFormulas[int(id)] = formula.tostring()
-
- StatData.db = self
- self.query('select * from stats')
- from . import info
- for result in self.cursor.fetchall():
- stat = info.NewStat(self, StatData(result))
- self.append(stat)
- self.allStats.append(stat)
- self.allStatIds[stat.stat] = stat
- self.allStatNames[stat.name] = stat
-
- # Name: listruns
- # Desc: Prints all runs matching a given user, if no argument
- # is given all runs are returned
- def listRuns(self, user=None):
- print('%-40s %-10s %-5s' % ('run name', 'user', 'id'))
- print('-' * 62)
- for run in self.allRuns:
- if user == None or user == run.user:
- print('%-40s %-10s %-10d' % (run.name, run.user, run.run))
-
- # Name: listTicks
- # Desc: Prints all samples for a given run
- def listTicks(self, runs=None):
- print("tick")
- print("----------------------------------------")
- sql = 'select distinct dt_tick from data where dt_stat=1180 and ('
- if runs != None:
- first = True
- for run in runs:
- if first:
- # sql += ' where'
- first = False
- else:
- sql += ' or'
- sql += ' dt_run=%s' % run.run
- sql += ')'
- self.query(sql)
- for r in self.cursor.fetchall():
- print(r[0])
-
- # Name: retTicks
- # Desc: Prints all samples for a given run
- def retTicks(self, runs=None):
- sql = 'select distinct dt_tick from data where dt_stat=1180 and ('
- if runs != None:
- first = True
- for run in runs:
- if first:
- first = False
- else:
- sql += ' or'
- sql += ' dt_run=%s' % run.run
- sql += ')'
- self.query(sql)
- ret = []
- for r in self.cursor.fetchall():
- ret.append(r[0])
- return ret
-
- # Name: liststats
- # Desc: Prints all statistics that appear in the database,
- # the optional argument is a regular expression that can
- # be used to prune the result set
- def listStats(self, regex=None):
- print('%-60s %-8s %-10s' % ('stat name', 'id', 'type'))
- print('-' * 80)
-
- rx = None
- if regex != None:
- rx = re.compile(regex)
-
- stats = [ stat.name for stat in self.allStats ]
- stats.sort(statcmp)
- for stat in stats:
- stat = self.allStatNames[stat]
- if rx == None or rx.match(stat.name):
- print('%-60s %-8s %-10s' % (stat.name, stat.stat, stat.type))
-
- # Name: liststats
- # Desc: Prints all statistics that appear in the database,
- # the optional argument is a regular expression that can
- # be used to prune the result set
- def listFormulas(self, regex=None):
- print('%-60s %s' % ('formula name', 'formula'))
- print('-' * 80)
-
- rx = None
- if regex != None:
- rx = re.compile(regex)
-
- stats = [ stat.name for stat in self.allStats ]
- stats.sort(statcmp)
- for stat in stats:
- stat = self.allStatNames[stat]
- if stat.type == 'FORMULA' and (rx == None or rx.match(stat.name)):
- print('%-60s %s' % (stat.name, self.allFormulas[stat.stat]))
-
- def getStat(self, stats):
- if type(stats) is not list:
- stats = [ stats ]
-
- ret = []
- for stat in stats:
- if type(stat) is int:
- ret.append(self.allStatIds[stat])
-
- if type(stat) is str:
- rx = re.compile(stat)
- for stat in self.allStats:
- if rx.match(stat.name):
- ret.append(stat)
- return ret
-
- #########################################
- # get the data
- #
- def query(self, op, stat, ticks, group=False):
- sql = 'select '
- sql += 'dt_stat as stat, '
- sql += 'dt_run as run, '
- sql += 'dt_x as x, '
- sql += 'dt_y as y, '
- if group:
- sql += 'dt_tick as tick, '
- sql += '%s(dt_data) as data ' % op
- sql += 'from data '
- sql += 'where '
-
- if isinstance(stat, list):
- val = ' or '.join([ 'dt_stat=%d' % s.stat for s in stat ])
- sql += ' (%s)' % val
- else:
- sql += ' dt_stat=%d' % stat.stat
-
- if self.runs != None and len(self.runs):
- val = ' or '.join([ 'dt_run=%d' % r for r in self.runs ])
- sql += ' and (%s)' % val
-
- if ticks != None and len(ticks):
- val = ' or '.join([ 'dt_tick=%d' % s for s in ticks ])
- sql += ' and (%s)' % val
-
- sql += ' group by dt_stat,dt_run,dt_x,dt_y'
- if group:
- sql += ',dt_tick'
- return sql
-
- # Name: sum
- # Desc: given a run, a stat and an array of samples, total the samples
- def sum(self, *args, **kwargs):
- return self.query('sum', *args, **kwargs)
-
- # Name: avg
- # Desc: given a run, a stat and an array of samples, average the samples
- def avg(self, stat, ticks):
- return self.query('avg', *args, **kwargs)
-
- # Name: stdev
- # Desc: given a run, a stat and an array of samples, get the standard
- # deviation
- def stdev(self, stat, ticks):
- return self.query('stddev', *args, **kwargs)
-
- def __setattr__(self, attr, value):
- super(Database, self).__setattr__(attr, value)
- if attr != 'method':
- return
-
- if value == 'sum':
- self._method = self.sum
- elif value == 'avg':
- self._method = self.avg
- elif value == 'stdev':
- self._method = self.stdev
- else:
- raise AttributeError("can only set get to: sum | avg | stdev")
-
- def data(self, stat, ticks=None):
- if ticks is None:
- ticks = self.ticks
- sql = self._method(self, stat, ticks)
- self.query(sql)
-
- runs = {}
- xmax = 0
- ymax = 0
- for x in self.cursor.fetchall():
- data = Data(x)
- if data.run not in runs:
- runs[data.run] = {}
- if data.x not in runs[data.run]:
- runs[data.run][data.x] = {}
-
- xmax = max(xmax, data.x)
- ymax = max(ymax, data.y)
- runs[data.run][data.x][data.y] = data.data
-
- results = Result(xmax + 1, ymax + 1)
- for run,data in runs.items():
- result = results[run]
- for x,ydata in data.items():
- for y,data in ydata.items():
- result[x][y] = data
- return results
-
- def __getitem__(self, key):
- return self.stattop[key]
diff --git a/util/stats/dbinit.py b/util/stats/dbinit.py
deleted file mode 100644
index 2035824..0000000
--- a/util/stats/dbinit.py
+++ /dev/null
@@ -1,383 +0,0 @@
-# Copyright (c) 2003-2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import MySQLdb
-
-class MyDB(object):
- def __init__(self, options):
- self.name = options.db
- self.host = options.host
- self.user = options.user
- self.passwd = options.passwd
- self.mydb = None
- self.cursor = None
-
- def admin(self):
- self.close()
- self.mydb = MySQLdb.connect(db='mysql', host=self.host, user=self.user,
- passwd=self.passwd)
- self.cursor = self.mydb.cursor()
-
- def connect(self):
- self.close()
- self.mydb = MySQLdb.connect(db=self.name, host=self.host,
- user=self.user, passwd=self.passwd)
- self.cursor = self.mydb.cursor()
-
- def close(self):
- if self.mydb is not None:
- self.mydb.close()
- self.cursor = None
-
- def query(self, sql):
- self.cursor.execute(sql)
-
- def drop(self):
- self.query('DROP DATABASE IF EXISTS %s' % self.name)
-
- def create(self):
- self.query('CREATE DATABASE %s' % self.name)
-
- def populate(self):
- #
- # Each run (or simulation) gets its own entry in the runs table to
- # group stats by where they were generated
- #
- # COLUMNS:
- # 'id' is a unique identifier for each run to be used in other
- # tables.
- # 'name' is the user designated name for the data generated. It is
- # configured in the simulator.
- # 'user' identifies the user that generated the data for the given
- # run.
- # 'project' another name to identify runs for a specific goal
- # 'date' is a timestamp for when the data was generated. It can be
- # used to easily expire data that was generated in the past.
- # 'expire' is a timestamp for when the data should be removed from
- # the database so we don't have years worth of junk.
- #
- # INDEXES:
- # 'run' is indexed so you can find out details of a run if the run
- # was retreived from the data table.
- # 'name' is indexed so that two all run names are forced to be unique
- #
- self.query('''
- CREATE TABLE runs(
- rn_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
- rn_name VARCHAR(200) NOT NULL,
- rn_sample VARCHAR(32) NOT NULL,
- rn_user VARCHAR(32) NOT NULL,
- rn_project VARCHAR(100) NOT NULL,
- rn_date TIMESTAMP NOT NULL,
- rn_expire TIMESTAMP NOT NULL,
- PRIMARY KEY (rn_id),
- UNIQUE (rn_name,rn_sample)
- ) TYPE=InnoDB''')
-
- #
- # The stat table gives us all of the data for a particular stat.
- #
- # COLUMNS:
- # 'stat' is a unique identifier for each stat to be used in other
- # tables for references.
- # 'name' is simply the simulator derived name for a given
- # statistic.
- # 'descr' is the description of the statistic and what it tells
- # you.
- # 'type' defines what the stat tells you. Types are:
- # SCALAR: A simple scalar statistic that holds one value
- # VECTOR: An array of statistic values. Such a something that
- # is generated per-thread. Vectors exist to give averages,
- # pdfs, cdfs, means, standard deviations, etc across the
- # stat values.
- # DIST: Is a distribution of data. When the statistic value is
- # sampled, its value is counted in a particular bucket.
- # Useful for keeping track of utilization of a resource.
- # (e.g. fraction of time it is 25% used vs. 50% vs. 100%)
- # VECTORDIST: Can be used when the distribution needs to be
- # factored out into a per-thread distribution of data for
- # example. It can still be summed across threads to find
- # the total distribution.
- # VECTOR2D: Can be used when you have a stat that is not only
- # per-thread, but it is per-something else. Like
- # per-message type.
- # FORMULA: This statistic is a formula, and its data must be
- # looked up in the formula table, for indicating how to
- # present its values.
- # 'subdata' is potentially used by any of the vector types to
- # give a specific name to all of the data elements within a
- # stat.
- # 'print' indicates whether this stat should be printed ever.
- # (Unnamed stats don't usually get printed)
- # 'prereq' only print the stat if the prereq is not zero.
- # 'prec' number of decimal places to print
- # 'nozero' don't print zero values
- # 'nonan' don't print NaN values
- # 'total' for vector type stats, print the total.
- # 'pdf' for vector type stats, print the pdf.
- # 'cdf' for vector type stats, print the cdf.
- #
- # The Following are for dist type stats:
- # 'min' is the minimum bucket value. Anything less is an underflow.
- # 'max' is the maximum bucket value. Anything more is an overflow.
- # 'bktsize' is the approximate number of entries in each bucket.
- # 'size' is the number of buckets. equal to (min/max)/bktsize.
- #
- # INDEXES:
- # 'stat' is indexed so that you can find out details about a stat
- # if the stat id was retrieved from the data table.
- # 'name' is indexed so that you can simply look up data about a
- # named stat.
- #
- self.query('''
- CREATE TABLE stats(
- st_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
- st_name VARCHAR(255) NOT NULL,
- st_descr TEXT NOT NULL,
- st_type ENUM("SCALAR", "VECTOR", "DIST", "VECTORDIST",
- "VECTOR2D", "FORMULA") NOT NULL,
- st_print BOOL NOT NULL,
- st_prereq SMALLINT UNSIGNED NOT NULL,
- st_prec TINYINT NOT NULL,
- st_nozero BOOL NOT NULL,
- st_nonan BOOL NOT NULL,
- st_total BOOL NOT NULL,
- st_pdf BOOL NOT NULL,
- st_cdf BOOL NOT NULL,
- st_min DOUBLE NOT NULL,
- st_max DOUBLE NOT NULL,
- st_bktsize DOUBLE NOT NULL,
- st_size SMALLINT UNSIGNED NOT NULL,
- PRIMARY KEY (st_id),
- UNIQUE (st_name)
- ) TYPE=InnoDB''')
-
- #
- # This is the main table of data for stats.
- #
- # COLUMNS:
- # 'stat' refers to the stat field given in the stat table.
- #
- # 'x' referrs to the first dimension of a multi-dimensional stat. For
- # a vector, x will start at 0 and increase for each vector
- # element.
- # For a distribution:
- # -1: sum (for calculating standard deviation)
- # -2: sum of squares (for calculating standard deviation)
- # -3: total number of samples taken (for calculating
- # standard deviation)
- # -4: minimum value
- # -5: maximum value
- # -6: underflow
- # -7: overflow
- # 'y' is used by a VECTORDIST and the VECTOR2D to describe the second
- # dimension.
- # 'run' is the run that the data was generated from. Details up in
- # the run table
- # 'tick' is a timestamp generated by the simulator.
- # 'data' is the actual stat value.
- #
- # INDEXES:
- # 'stat' is indexed so that a user can find all of the data for a
- # particular stat. It is not unique, because that specific stat
- # can be found in many runs and samples, in addition to
- # having entries for the mulidimensional cases.
- # 'run' is indexed to allow a user to remove all of the data for a
- # particular execution run. It can also be used to allow the
- # user to print out all of the data for a given run.
- #
- self.query('''
- CREATE TABLE data(
- dt_stat SMALLINT UNSIGNED NOT NULL,
- dt_x SMALLINT NOT NULL,
- dt_y SMALLINT NOT NULL,
- dt_run SMALLINT UNSIGNED NOT NULL,
- dt_tick BIGINT UNSIGNED NOT NULL,
- dt_data DOUBLE NOT NULL,
- INDEX (dt_stat),
- INDEX (dt_run),
- UNIQUE (dt_stat,dt_x,dt_y,dt_run,dt_tick)
- ) TYPE=InnoDB;''')
-
- #
- # Names and descriptions for multi-dimensional stats (vectors, etc.)
- # are stored here instead of having their own entry in the statistics
- # table. This allows all parts of a single stat to easily share a
- # single id.
- #
- # COLUMNS:
- # 'stat' is the unique stat identifier from the stat table.
- # 'x' is the first dimension for multi-dimensional stats
- # corresponding to the data table above.
- # 'y' is the second dimension for multi-dimensional stats
- # corresponding to the data table above.
- # 'name' is the specific subname for the unique stat,x,y combination.
- # 'descr' is the specific description for the uniqe stat,x,y
- # combination.
- #
- # INDEXES:
- # 'stat' is indexed so you can get the subdata for a specific stat.
- #
- self.query('''
- CREATE TABLE subdata(
- sd_stat SMALLINT UNSIGNED NOT NULL,
- sd_x SMALLINT NOT NULL,
- sd_y SMALLINT NOT NULL,
- sd_name VARCHAR(255) NOT NULL,
- sd_descr TEXT,
- UNIQUE (sd_stat,sd_x,sd_y)
- ) TYPE=InnoDB''')
-
-
- #
- # The formula table is maintained separately from the data table
- # because formula data, unlike other stat data cannot be represented
- # there.
- #
- # COLUMNS:
- # 'stat' refers to the stat field generated in the stat table.
- # 'formula' is the actual string representation of the formula
- # itself.
- #
- # INDEXES:
- # 'stat' is indexed so that you can just look up a formula.
- #
- self.query('''
- CREATE TABLE formulas(
- fm_stat SMALLINT UNSIGNED NOT NULL,
- fm_formula BLOB NOT NULL,
- PRIMARY KEY(fm_stat)
- ) TYPE=InnoDB''')
-
- #
- # Each stat used in each formula is kept in this table. This way, if
- # you want to print out a particular formula, you can simply find out
- # which stats you need by looking in this table. Additionally, when
- # you remove a stat from the stats table and data table, you remove
- # any references to the formula in this table. When a formula is no
- # longer referred to, you remove its entry.
- #
- # COLUMNS:
- # 'stat' is the stat id from the stat table above.
- # 'child' is the stat id of a stat that is used for this formula.
- # There may be many children for any given 'stat' (formula)
- #
- # INDEXES:
- # 'stat' is indexed so you can look up all of the children for a
- # particular stat.
- # 'child' is indexed so that you can remove an entry when a stat is
- # removed.
- #
- self.query('''
- CREATE TABLE formula_ref(
- fr_stat SMALLINT UNSIGNED NOT NULL,
- fr_run SMALLINT UNSIGNED NOT NULL,
- UNIQUE (fr_stat,fr_run),
- INDEX (fr_stat),
- INDEX (fr_run)
- ) TYPE=InnoDB''')
-
- # COLUMNS:
- # 'event' is the unique event id from the event_desc table
- # 'run' is simulation run id that this event took place in
- # 'tick' is the tick when the event happened
- #
- # INDEXES:
- # 'event' is indexed so you can look up all occurences of a
- # specific event
- # 'run' is indexed so you can find all events in a run
- # 'tick' is indexed because we want the unique thing anyway
- # 'event,run,tick' is unique combination
- self.query('''
- CREATE TABLE events(
- ev_event SMALLINT UNSIGNED NOT NULL,
- ev_run SMALLINT UNSIGNED NOT NULL,
- ev_tick BIGINT UNSIGNED NOT NULL,
- INDEX(ev_event),
- INDEX(ev_run),
- INDEX(ev_tick),
- UNIQUE(ev_event,ev_run,ev_tick)
- ) TYPE=InnoDB''')
-
- # COLUMNS:
- # 'id' is the unique description id
- # 'name' is the name of the event that occurred
- #
- # INDEXES:
- # 'id' is indexed because it is the primary key and is what you use
- # to look up the descriptions
- # 'name' is indexed so one can find the event based on name
- #
- self.query('''
- CREATE TABLE event_names(
- en_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
- en_name VARCHAR(255) NOT NULL,
- PRIMARY KEY (en_id),
- UNIQUE (en_name)
- ) TYPE=InnoDB''')
-
- def clean(self):
- self.query('''
- DELETE data
- FROM data
- LEFT JOIN runs ON dt_run=rn_id
- WHERE rn_id IS NULL''')
-
- self.query('''
- DELETE formula_ref
- FROM formula_ref
- LEFT JOIN runs ON fr_run=rn_id
- WHERE rn_id IS NULL''')
-
- self.query('''
- DELETE formulas
- FROM formulas
- LEFT JOIN formula_ref ON fm_stat=fr_stat
- WHERE fr_stat IS NULL''')
-
- self.query('''
- DELETE stats
- FROM stats
- LEFT JOIN data ON st_id=dt_stat
- WHERE dt_stat IS NULL''')
-
- self.query('''
- DELETE subdata
- FROM subdata
- LEFT JOIN data ON sd_stat=dt_stat
- WHERE dt_stat IS NULL''')
-
- self.query('''
- DELETE events
- FROM events
- LEFT JOIN runs ON ev_run=rn_id
- WHERE rn_id IS NULL''')
-
- self.query('''
- DELETE event_names
- FROM event_names
- LEFT JOIN events ON en_id=ev_event
- WHERE ev_event IS NULL''')
diff --git a/util/stats/display.py b/util/stats/display.py
deleted file mode 100644
index 4f04eb3..0000000
--- a/util/stats/display.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright (c) 2003-2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from functools import reduce
-
-class Value:
- def __init__(self, value, precision, percent = False):
- self.value = float(value)
- self.precision = precision
- self.percent = percent
- def __str__(self):
- if isinstance(self.value, str):
- if self.value.lower() == 'nan':
- value = 'NaN'
- if self.value.lower() == 'inf':
- value = 'Inf'
- else:
- if self.precision >= 0:
- format = "%%.%df" % self.precision
- elif self.value == 0.0:
- format = "%.0f"
- elif self.value % 1.0 == 0.0:
- format = "%.0f"
- else:
- format = "%f"
- value = self.value
- if self.percent:
- value = value * 100.0
- value = format % value
-
- if self.percent:
- value = value + "%"
-
- return value
-
-class Print:
- def __init__(self, **vals):
- self.__dict__.update(vals)
-
- def __str__(self):
- value = Value(self.value, self.precision)
- pdf = ''
- cdf = ''
- if 'pdf' in self.__dict__:
- pdf = Value(self.pdf, 2, True)
- if 'cdf' in self.__dict__:
- cdf = Value(self.cdf, 2, True)
-
- output = "%-40s %12s %8s %8s" % (self.name, value, pdf, cdf)
-
- if descriptions and 'desc' in self.__dict__ and self.desc:
- output = "%s # %s" % (output, self.desc)
-
- return output
-
- def doprint(self):
- if display_all:
- return True
- if self.value == 0.0 and (self.flags & flags_nozero):
- return False
- if isinstance(self.value, str):
- if self.value == 'NaN' and (self.flags & flags_nonan):
- return False
- return True
-
- def display(self):
- if self.doprint():
- print(self)
-
-class VectorDisplay:
- def display(self):
- if not self.value:
- return
-
- p = Print()
- p.flags = self.flags
- p.precision = self.precision
-
- if not isinstance(self.value, (list, tuple)):
- p.name = self.name
- p.desc = self.desc
- p.value = self.value
- p.display()
- return
-
- mytotal = reduce(lambda x,y: float(x) + float(y), self.value)
- mycdf = 0.0
-
- value = self.value
-
- if display_all:
- subnames = [ '[%d]' % i for i in range(len(value)) ]
- else:
- subnames = [''] * len(value)
-
- if 'subnames' in self.__dict__:
- for i,each in enumerate(self.subnames):
- if len(each) > 0:
- subnames[i] = '.%s' % each
-
- subdescs = [self.desc]*len(value)
- if 'subdescs' in self.__dict__:
- for i in range(min(len(value), len(self.subdescs))):
- subdescs[i] = self.subdescs[i]
-
- for val,sname,sdesc in map(None, value, subnames, subdescs):
- if mytotal > 0.0:
- mypdf = float(val) / float(mytotal)
- mycdf += mypdf
- if (self.flags & flags_pdf):
- p.pdf = mypdf
- p.cdf = mycdf
-
- if len(sname) == 0:
- continue
-
- p.name = self.name + sname
- p.desc = sdesc
- p.value = val
- p.display()
-
- if (self.flags & flags_total):
- if ('pdf' in p.__dict__): del p.__dict__['pdf']
- if ('cdf' in p.__dict__): del p.__dict__['cdf']
- p.name = self.name + '.total'
- p.desc = self.desc
- p.value = mytotal
- p.display()
diff --git a/util/stats/flags.py b/util/stats/flags.py
deleted file mode 100644
index ab72ca7..0000000
--- a/util/stats/flags.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (c) 2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-init = 0x00000001
-printable = 0x00000002
-total = 0x00000010
-pdf = 0x00000020
-cdf = 0x00000040
-dist = 0x00000080
-nozero = 0x00000100
-nonan = 0x00000200
diff --git a/util/stats/info.py b/util/stats/info.py
deleted file mode 100644
index b7a1e35..0000000
--- a/util/stats/info.py
+++ /dev/null
@@ -1,767 +0,0 @@
-# Copyright (c) 2003-2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-import operator, re, types
-from functools import reduce
-
-class ProxyError(Exception):
- pass
-
-def unproxy(proxy):
- if hasattr(proxy, '__unproxy__'):
- return proxy.__unproxy__()
-
- return proxy
-
-def scalar(stat):
- stat = unproxy(stat)
- assert(stat.__scalar__() != stat.__vector__())
- return stat.__scalar__()
-
-def vector(stat):
- stat = unproxy(stat)
- assert(stat.__scalar__() != stat.__vector__())
- return stat.__vector__()
-
-def value(stat, *args):
- stat = unproxy(stat)
- return stat.__value__(*args)
-
-def values(stat, run):
- stat = unproxy(stat)
- result = []
- for i in range(len(stat)):
- val = value(stat, run, i)
- if val is None:
- return None
- result.append(val)
- return result
-
-def total(stat, run):
- return sum(values(stat, run))
-
-def len(stat):
- stat = unproxy(stat)
- return stat.__len__()
-
-class Value(object):
- def __scalar__(self):
- raise AttributeError("must define __scalar__ for %s" % (type (self)))
- def __vector__(self):
- raise AttributeError("must define __vector__ for %s" % (type (self)))
-
- def __add__(self, other):
- return BinaryProxy(operator.__add__, self, other)
- def __sub__(self, other):
- return BinaryProxy(operator.__sub__, self, other)
- def __mul__(self, other):
- return BinaryProxy(operator.__mul__, self, other)
- def __div__(self, other):
- return BinaryProxy(operator.__div__, self, other)
- def __truediv__(self, other):
- return BinaryProxy(operator.__truediv__, self, other)
- def __floordiv__(self, other):
- return BinaryProxy(operator.__floordiv__, self, other)
-
- def __radd__(self, other):
- return BinaryProxy(operator.__add__, other, self)
- def __rsub__(self, other):
- return BinaryProxy(operator.__sub__, other, self)
- def __rmul__(self, other):
- return BinaryProxy(operator.__mul__, other, self)
- def __rdiv__(self, other):
- return BinaryProxy(operator.__div__, other, self)
- def __rtruediv__(self, other):
- return BinaryProxy(operator.__truediv__, other, self)
- def __rfloordiv__(self, other):
- return BinaryProxy(operator.__floordiv__, other, self)
-
- def __neg__(self):
- return UnaryProxy(operator.__neg__, self)
- def __pos__(self):
- return UnaryProxy(operator.__pos__, self)
- def __abs__(self):
- return UnaryProxy(operator.__abs__, self)
-
-class Scalar(Value):
- def __scalar__(self):
- return True
-
- def __vector__(self):
- return False
-
- def __value__(self, run):
- raise AttributeError('__value__ must be defined')
-
-class VectorItemProxy(Value):
- def __init__(self, proxy, index):
- self.proxy = proxy
- self.index = index
-
- def __scalar__(self):
- return True
-
- def __vector__(self):
- return False
-
- def __value__(self, run):
- return value(self.proxy, run, self.index)
-
-class Vector(Value):
- def __scalar__(self):
- return False
-
- def __vector__(self):
- return True
-
- def __value__(self, run, index):
- raise AttributeError('__value__ must be defined')
-
- def __getitem__(self, index):
- return VectorItemProxy(self, index)
-
-class ScalarConstant(Scalar):
- def __init__(self, constant):
- self.constant = constant
- def __value__(self, run):
- return self.constant
- def __str__(self):
- return str(self.constant)
-
-class VectorConstant(Vector):
- def __init__(self, constant):
- self.constant = constant
- def __value__(self, run, index):
- return self.constant[index]
- def __len__(self):
- return len(self.constant)
- def __str__(self):
- return str(self.constant)
-
-def WrapValue(value):
- if isinstance(value, (int, float)):
- return ScalarConstant(value)
- if isinstance(value, (list, tuple)):
- return VectorConstant(value)
- if isinstance(value, Value):
- return value
-
- raise AttributeError('Only values can be wrapped')
-
-class Statistic(object):
- def __getattr__(self, attr):
- if attr in ('data', 'x', 'y'):
- result = self.source.data(self, self.ticks)
- self.data = result.data
- self.x = result.x
- self.y = result.y
- return super(Statistic, self).__getattribute__(attr)
-
- def __setattr__(self, attr, value):
- if attr == 'stat':
- raise AttributeError('%s is read only' % stat)
- if attr in ('source', 'ticks'):
- if getattr(self, attr) != value:
- if hasattr(self, 'data'):
- delattr(self, 'data')
-
- super(Statistic, self).__setattr__(attr, value)
-
- def __str__(self):
- return self.name
-
-class ValueProxy(Value):
- def __getattr__(self, attr):
- if attr == '__value__':
- if scalar(self):
- return self.__scalarvalue__
- if vector(self):
- return self.__vectorvalue__
- if attr == '__len__':
- if vector(self):
- return self.__vectorlen__
- return super(ValueProxy, self).__getattribute__(attr)
-
-class UnaryProxy(ValueProxy):
- def __init__(self, op, arg):
- self.op = op
- self.arg = WrapValue(arg)
-
- def __scalar__(self):
- return scalar(self.arg)
-
- def __vector__(self):
- return vector(self.arg)
-
- def __scalarvalue__(self, run):
- val = value(self.arg, run)
- if val is None:
- return None
- return self.op(val)
-
- def __vectorvalue__(self, run, index):
- val = value(self.arg, run, index)
- if val is None:
- return None
- return self.op(val)
-
- def __vectorlen__(self):
- return len(unproxy(self.arg))
-
- def __str__(self):
- if self.op == operator.__neg__:
- return '-%s' % str(self.arg)
- if self.op == operator.__pos__:
- return '+%s' % str(self.arg)
- if self.op == operator.__abs__:
- return 'abs(%s)' % self.arg
-
-class BinaryProxy(ValueProxy):
- def __init__(self, op, arg0, arg1):
- super(BinaryProxy, self).__init__()
- self.op = op
- self.arg0 = WrapValue(arg0)
- self.arg1 = WrapValue(arg1)
-
- def __scalar__(self):
- return scalar(self.arg0) and scalar(self.arg1)
-
- def __vector__(self):
- return vector(self.arg0) or vector(self.arg1)
-
- def __scalarvalue__(self, run):
- val0 = value(self.arg0, run)
- val1 = value(self.arg1, run)
- if val0 is None or val1 is None:
- return None
- try:
- return self.op(val0, val1)
- except ZeroDivisionError:
- return None
-
- def __vectorvalue__(self, run, index):
- if scalar(self.arg0):
- val0 = value(self.arg0, run)
- if vector(self.arg0):
- val0 = value(self.arg0, run, index)
- if scalar(self.arg1):
- val1 = value(self.arg1, run)
- if vector(self.arg1):
- val1 = value(self.arg1, run, index)
-
- if val0 is None or val1 is None:
- return None
-
- try:
- return self.op(val0, val1)
- except ZeroDivisionError:
- return None
-
- def __vectorlen__(self):
- if vector(self.arg0) and scalar(self.arg1):
- return len(self.arg0)
- if scalar(self.arg0) and vector(self.arg1):
- return len(self.arg1)
-
- len0 = len(self.arg0)
- len1 = len(self.arg1)
-
- if len0 != len1:
- raise AttributeError(
- "vectors of different lengths %d != %d" % (len0, len1))
-
- return len0
-
- def __str__(self):
- ops = { operator.__add__ : '+',
- operator.__sub__ : '-',
- operator.__mul__ : '*',
- operator.__div__ : '/',
- operator.__truediv__ : '/',
- operator.__floordiv__ : '//' }
-
- return '(%s %s %s)' % (str(self.arg0), ops[self.op], str(self.arg1))
-
-class Proxy(Value):
- def __init__(self, name, dict):
- self.name = name
- self.dict = dict
-
- def __unproxy__(self):
- return unproxy(self.dict[self.name])
-
- def __getitem__(self, index):
- return ItemProxy(self, index)
-
- def __getattr__(self, attr):
- return AttrProxy(self, attr)
-
- def __str__(self):
- return str(self.dict[self.name])
-
-class ItemProxy(Proxy):
- def __init__(self, proxy, index):
- self.proxy = proxy
- self.index = index
-
- def __unproxy__(self):
- return unproxy(unproxy(self.proxy)[self.index])
-
- def __str__(self):
- return '%s[%s]' % (self.proxy, self.index)
-
-class AttrProxy(Proxy):
- def __init__(self, proxy, attr):
- self.proxy = proxy
- self.attr = attr
-
- def __unproxy__(self):
- proxy = unproxy(self.proxy)
- try:
- attr = getattr(proxy, self.attr)
- except AttributeError as e:
- raise ProxyError(e)
- return unproxy(attr)
-
- def __str__(self):
- return '%s.%s' % (self.proxy, self.attr)
-
-class ProxyGroup(object):
- def __init__(self, dict=None, **kwargs):
- self.__dict__['dict'] = {}
-
- if dict is not None:
- self.dict.update(dict)
-
- if kwargs:
- self.dict.update(kwargs)
-
- def __getattr__(self, name):
- return Proxy(name, self.dict)
-
- def __setattr__(self, attr, value):
- self.dict[attr] = value
-
-class ScalarStat(Statistic,Scalar):
- def __value__(self, run):
- if run not in self.data:
- return None
- return self.data[run][0][0]
-
- def display(self, run=None):
- from . import display
- p = display.Print()
- p.name = self.name
- p.desc = self.desc
- p.value = value(self, run)
- p.flags = self.flags
- p.precision = self.precision
- if display.all or (self.flags & flags.printable):
- p.display()
-
-class VectorStat(Statistic,Vector):
- def __value__(self, run, item):
- if run not in self.data:
- return None
- return self.data[run][item][0]
-
- def __len__(self):
- return self.x
-
- def display(self, run=None):
- from . import display
- d = display.VectorDisplay()
- d.name = self.name
- d.desc = self.desc
- d.value = [ value(self, run, i) for i in range(len(self)) ]
- d.flags = self.flags
- d.precision = self.precision
- d.display()
-
-class Formula(Value):
- def __getattribute__(self, attr):
- if attr not in ( '__scalar__', '__vector__', '__value__', '__len__' ):
- return super(Formula, self).__getattribute__(attr)
-
- formula = re.sub(':', '__', self.formula)
- value = eval(formula, self.source.stattop)
- return getattr(value, attr)
-
- def __str__(self):
- return self.name
-
-class SimpleDist(Statistic):
- def __init__(self, sums, squares, samples):
- self.sums = sums
- self.squares = squares
- self.samples = samples
-
- def display(self, name, desc, flags, precision):
- from . import display
- p = display.Print()
- p.flags = flags
- p.precision = precision
-
- if self.samples > 0:
- p.name = name + ".mean"
- p.value = self.sums / self.samples
- p.display()
-
- p.name = name + ".stdev"
- if self.samples > 1:
- var = (self.samples * self.squares - self.sums ** 2) \
- / (self.samples * (self.samples - 1))
- if var >= 0:
- p.value = math.sqrt(var)
- else:
- p.value = 'NaN'
- else:
- p.value = 0.0
- p.display()
-
- p.name = name + ".samples"
- p.value = self.samples
- p.display()
-
- def comparable(self, other):
- return True
-
- def __eq__(self, other):
- return self.sums == other.sums and self.squares == other.squares and \
- self.samples == other.samples
-
- def __isub__(self, other):
- self.sums -= other.sums
- self.squares -= other.squares
- self.samples -= other.samples
- return self
-
- def __iadd__(self, other):
- self.sums += other.sums
- self.squares += other.squares
- self.samples += other.samples
- return self
-
- def __itruediv__(self, other):
- if not other:
- return self
- self.sums /= other
- self.squares /= other
- self.samples /= other
- return self
-
-class FullDist(SimpleDist):
- def __init__(self, sums, squares, samples, minval, maxval,
- under, vec, over, min, max, bsize, size):
- self.sums = sums
- self.squares = squares
- self.samples = samples
- self.minval = minval
- self.maxval = maxval
- self.under = under
- self.vec = vec
- self.over = over
- self.min = min
- self.max = max
- self.bsize = bsize
- self.size = size
-
- def display(self, name, desc, flags, precision):
- from . import display
- p = display.Print()
- p.flags = flags
- p.precision = precision
-
- p.name = name + '.min_val'
- p.value = self.minval
- p.display()
-
- p.name = name + '.max_val'
- p.value = self.maxval
- p.display()
-
- p.name = name + '.underflow'
- p.value = self.under
- p.display()
-
- i = self.min
- for val in self.vec[:-1]:
- p.name = name + '[%d:%d]' % (i, i + self.bsize - 1)
- p.value = val
- p.display()
- i += self.bsize
-
- p.name = name + '[%d:%d]' % (i, self.max)
- p.value = self.vec[-1]
- p.display()
-
-
- p.name = name + '.overflow'
- p.value = self.over
- p.display()
-
- SimpleDist.display(self, name, desc, flags, precision)
-
- def comparable(self, other):
- return self.min == other.min and self.max == other.max and \
- self.bsize == other.bsize and self.size == other.size
-
- def __eq__(self, other):
- return self.sums == other.sums and self.squares == other.squares and \
- self.samples == other.samples
-
- def __isub__(self, other):
- self.sums -= other.sums
- self.squares -= other.squares
- self.samples -= other.samples
-
- if other.samples:
- self.minval = min(self.minval, other.minval)
- self.maxval = max(self.maxval, other.maxval)
- self.under -= under
- self.vec = list(map(lambda x,y: x - y, self.vec, other.vec))
- self.over -= over
- return self
-
- def __iadd__(self, other):
- if not self.samples and other.samples:
- self = other
- return self
-
- self.sums += other.sums
- self.squares += other.squares
- self.samples += other.samples
-
- if other.samples:
- self.minval = min(self.minval, other.minval)
- self.maxval = max(self.maxval, other.maxval)
- self.under += other.under
- self.vec = list(map(lambda x,y: x + y, self.vec, other.vec))
- self.over += other.over
- return self
-
- def __itruediv__(self, other):
- if not other:
- return self
- self.sums /= other
- self.squares /= other
- self.samples /= other
-
- if self.samples:
- self.under /= other
- for i in range(len(self.vec)):
- self.vec[i] /= other
- self.over /= other
- return self
-
-class Dist(Statistic):
- def display(self):
- from . import display
- if not display.all and not (self.flags & flags.printable):
- return
-
- self.dist.display(self.name, self.desc, self.flags, self.precision)
-
- def comparable(self, other):
- return self.name == other.name and \
- self.dist.compareable(other.dist)
-
- def __eq__(self, other):
- return self.dist == other.dist
-
- def __isub__(self, other):
- self.dist -= other.dist
- return self
-
- def __iadd__(self, other):
- self.dist += other.dist
- return self
-
- def __itruediv__(self, other):
- if not other:
- return self
- self.dist /= other
- return self
-
-class VectorDist(Statistic):
- def display(self):
- from . import display
- if not display.all and not (self.flags & flags.printable):
- return
-
- if isinstance(self.dist, SimpleDist):
- return
-
- for dist,sn,sd,i in map(None, self.dist, self.subnames, self.subdescs,
- range(len(self.dist))):
- if len(sn) > 0:
- name = '%s.%s' % (self.name, sn)
- else:
- name = '%s[%d]' % (self.name, i)
-
- if len(sd) > 0:
- desc = sd
- else:
- desc = self.desc
-
- dist.display(name, desc, self.flags, self.precision)
-
- if (self.flags & flags.total) or 1:
- if isinstance(self.dist[0], SimpleDist):
- disttotal = SimpleDist( \
- reduce(sums, [d.sums for d in self.dist]),
- reduce(sums, [d.squares for d in self.dist]),
- reduce(sums, [d.samples for d in self.dist]))
- else:
- disttotal = FullDist( \
- reduce(sums, [d.sums for d in self.dist]),
- reduce(sums, [d.squares for d in self.dist]),
- reduce(sums, [d.samples for d in self.dist]),
- min([d.minval for d in self.dist]),
- max([d.maxval for d in self.dist]),
- reduce(sums, [d.under for d in self.dist]),
- reduce(sums, [d.vec for d in self.dist]),
- reduce(sums, [d.over for d in self.dist]),
- dist[0].min,
- dist[0].max,
- dist[0].bsize,
- dist[0].size)
-
- name = '%s.total' % (self.name)
- desc = self.desc
- disttotal.display(name, desc, self.flags, self.precision)
-
- def comparable(self, other):
- return self.name == other.name and \
- alltrue(map(lambda x, y : x.comparable(y),
- self.dist,
- other.dist))
-
- def __eq__(self, other):
- return alltrue(map(lambda x, y : x == y, self.dist, other.dist))
-
- def __isub__(self, other):
- if isinstance(self.dist, (list, tuple)) and \
- isinstance(other.dist, (list, tuple)):
- for sd,od in zip(self.dist, other.dist):
- sd -= od
- else:
- self.dist -= other.dist
- return self
-
- def __iadd__(self, other):
- if isinstance(self.dist, (list, tuple)) and \
- isinstance(other.dist, (list, tuple)):
- for sd,od in zip(self.dist, other.dist):
- sd += od
- else:
- self.dist += other.dist
- return self
-
- def __itruediv__(self, other):
- if not other:
- return self
- if isinstance(self.dist, (list, tuple)):
- for dist in self.dist:
- dist /= other
- else:
- self.dist /= other
- return self
-
-class Vector2d(Statistic):
- def display(self):
- from . import display
- if not display.all and not (self.flags & flags.printable):
- return
-
- d = display.VectorDisplay()
- d.__dict__.update(self.__dict__)
-
- if 'ysubnames' in self.__dict__:
- ysubnames = list(self.ysubnames)
- slack = self.x - len(ysubnames)
- if slack > 0:
- ysubnames.extend(['']*slack)
- else:
- ysubnames = list(range(self.x))
-
- for x,sname in enumerate(ysubnames):
- o = x * self.y
- d.value = self.value[o:o+self.y]
- d.name = '%s[%s]' % (self.name, sname)
- d.display()
-
- if self.flags & flags.total:
- d.value = []
- for y in range(self.y):
- xtot = 0.0
- for x in range(self.x):
- xtot += self.value[y + x * self.x]
- d.value.append(xtot)
-
- d.name = self.name + '.total'
- d.display()
-
- def comparable(self, other):
- return self.name == other.name and self.x == other.x and \
- self.y == other.y
-
- def __eq__(self, other):
- return True
-
- def __isub__(self, other):
- return self
-
- def __iadd__(self, other):
- return self
-
- def __itruediv__(self, other):
- if not other:
- return self
- return self
-
-def NewStat(source, data):
- stat = None
- if data.type == 'SCALAR':
- stat = ScalarStat()
- elif data.type == 'VECTOR':
- stat = VectorStat()
- elif data.type == 'DIST':
- stat = Dist()
- elif data.type == 'VECTORDIST':
- stat = VectorDist()
- elif data.type == 'VECTOR2D':
- stat = Vector2d()
- elif data.type == 'FORMULA':
- stat = Formula()
-
- stat.__dict__['source'] = source
- stat.__dict__['ticks'] = None
- stat.__dict__.update(data.__dict__)
-
- return stat
-
diff --git a/util/stats/output.py b/util/stats/output.py
deleted file mode 100644
index b453d0d..0000000
--- a/util/stats/output.py
+++ /dev/null
@@ -1,212 +0,0 @@
-# Copyright (c) 2005-2006 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from .chart import ChartOptions
-
-class StatOutput(ChartOptions):
- def __init__(self, jobfile, info, stat=None):
- super(StatOutput, self).__init__()
- self.jobfile = jobfile
- self.stat = stat
- self.invert = False
- self.info = info
-
- def display(self, name, printmode = 'G'):
- from . import info
-
- if printmode == 'G':
- valformat = '%g'
- elif printmode != 'F' and value > 1e6:
- valformat = '%0.5e'
- else:
- valformat = '%f'
-
- for job in self.jobfile.jobs():
- value = self.info.get(job, self.stat)
- if value is None:
- return
-
- if not isinstance(value, list):
- value = [ value ]
-
- if self.invert:
- for i,val in enumerate(value):
- if val != 0.0:
- value[i] = 1 / val
-
- valstring = ', '.join([ valformat % val for val in value ])
- print('%-50s %s' % (job.name + ':', valstring))
-
- def graph(self, name, graphdir, proxy=None):
- from os.path import expanduser, isdir, join as joinpath
- from .barchart import BarChart
- from matplotlib.numerix import Float, array, zeros
- import os, re, urllib.request, urllib.parse, urllib.error
- from jobfile import crossproduct
-
- confgroups = self.jobfile.groups()
- ngroups = len(confgroups)
- skiplist = [ False ] * ngroups
- groupopts = []
- baropts = []
- groups = []
- for i,group in enumerate(confgroups):
- if group.flags.graph_group:
- groupopts.append(group.subopts())
- skiplist[i] = True
- elif group.flags.graph_bars:
- baropts.append(group.subopts())
- skiplist[i] = True
- else:
- groups.append(group)
-
- has_group = bool(groupopts)
- if has_group:
- groupopts = [ group for group in crossproduct(groupopts) ]
- else:
- groupopts = [ None ]
-
- if baropts:
- baropts = [ bar for bar in crossproduct(baropts) ]
- else:
- raise AttributeError('No group selected for graph bars')
-
- directory = expanduser(graphdir)
- if not isdir(directory):
- os.mkdir(directory)
- html = file(joinpath(directory, '%s.html' % name), 'w')
- print('<html>', file=html)
- print('<title>Graphs for %s</title>' % name, file=html)
- print('<body>', file=html)
- html.flush()
-
- for options in self.jobfile.options(groups):
- chart = BarChart(self)
-
- data = [ [ None ] * len(baropts) for i in range(len(groupopts)) ]
- enabled = False
- stacked = 0
- for g,gopt in enumerate(groupopts):
- for b,bopt in enumerate(baropts):
- if gopt is None:
- gopt = []
- job = self.jobfile.job(options + gopt + bopt)
- if not job:
- continue
-
- if proxy:
- from . import db
- proxy.dict['system'] = self.info[job.system]
- val = self.info.get(job, self.stat)
- if val is None:
- print('stat "%s" for job "%s" not found' % \
- (self.stat, job))
-
- if isinstance(val, (list, tuple)):
- if len(val) == 1:
- val = val[0]
- else:
- stacked = len(val)
-
- data[g][b] = val
-
- if stacked == 0:
- for i in range(len(groupopts)):
- for j in range(len(baropts)):
- if data[i][j] is None:
- data[i][j] = 0.0
- else:
- for i in range(len(groupopts)):
- for j in range(len(baropts)):
- val = data[i][j]
- if val is None:
- data[i][j] = [ 0.0 ] * stacked
- elif len(val) != stacked:
- raise ValueError("some stats stacked, some not")
-
- data = array(data)
- if data.sum() == 0:
- continue
-
- dim = len(data.shape)
- x = data.shape[0]
- xkeep = [ i for i in range(x) if data[i].sum() != 0 ]
- y = data.shape[1]
- ykeep = [ i for i in range(y) if data[:,i].sum() != 0 ]
- data = data.take(xkeep, axis=0)
- data = data.take(ykeep, axis=1)
- if not has_group:
- data = data.take([ 0 ], axis=0)
- chart.data = data
-
-
- bopts = [ baropts[i] for i in ykeep ]
- bdescs = [ ' '.join([o.desc for o in opt]) for opt in bopts]
-
- if has_group:
- gopts = [ groupopts[i] for i in xkeep ]
- gdescs = [ ' '.join([o.desc for o in opt]) for opt in gopts]
-
- if chart.legend is None:
- if stacked:
- try:
- chart.legend = self.info.rcategories
- except:
- chart.legend = [ str(i) for i in range(stacked) ]
- else:
- chart.legend = bdescs
-
- if chart.xticks is None:
- if has_group:
- chart.xticks = gdescs
- else:
- chart.xticks = []
- chart.graph()
-
- names = [ opt.name for opt in options ]
- descs = [ opt.desc for opt in options ]
-
- if names[0] == 'run':
- names = names[1:]
- descs = descs[1:]
-
- basename = '%s-%s' % (name, ':'.join(names))
- desc = ' '.join(descs)
-
- pngname = '%s.png' % basename
- psname = '%s.eps' % re.sub(':', '-', basename)
- epsname = '%s.ps' % re.sub(':', '-', basename)
- chart.savefig(joinpath(directory, pngname))
- chart.savefig(joinpath(directory, epsname))
- chart.savefig(joinpath(directory, psname))
- html_name = urllib.parse.quote(pngname)
- print('''%s<br><img src="%s"><br>''' % (desc, html_name),
- file=html)
- html.flush()
-
- print('</body>', file=html)
- print('</html>', file=html)
- html.close()
diff --git a/util/stats/print.py b/util/stats/print.py
deleted file mode 100644
index 38c51d9..0000000
--- a/util/stats/print.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# Copyright (c) 2003-2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from functools import reduce
-
-all = False
-descriptions = False
-
-class Value:
- def __init__(self, value, precision, percent = False):
- self.value = value
- self.precision = precision
- self.percent = percent
- def __str__(self):
- if isinstance(self.value, str):
- if self.value.lower() == 'nan':
- value = 'NaN'
- if self.value.lower() == 'inf':
- value = 'Inf'
- else:
- if self.precision >= 0:
- format = "%%.%df" % self.precision
- elif self.value == 0.0:
- format = "%.0f"
- elif self.value % 1.0 == 0.0:
- format = "%.0f"
- else:
- format = "%f"
- value = self.value
- if self.percent:
- value = value * 100.0
- value = format % value
-
- if self.percent:
- value = value + "%"
-
- return value
-
-class Print:
- def __init__(self, **vals):
- self.__dict__.update(vals)
-
- def __str__(self):
- value = Value(self.value, self.precision)
- pdf = ''
- cdf = ''
- if 'pdf' in self.__dict__:
- pdf = Value(self.pdf, 2, True)
- if 'cdf' in self.__dict__:
- cdf = Value(self.cdf, 2, True)
-
- output = "%-40s %12s %8s %8s" % (self.name, value, pdf, cdf)
-
- if descriptions and 'desc' in self.__dict__ and self.desc:
- output = "%s # %s" % (output, self.desc)
-
- return output
-
- def doprint(self):
- if display_all:
- return True
- if self.value == 0.0 and (self.flags & flags_nozero):
- return False
- if isinstance(self.value, str):
- if self.value == 'NaN' and (self.flags & flags_nonan):
- return False
- return True
-
- def display(self):
- if self.doprint():
- print(self)
-
-class VectorDisplay:
- def display(self):
- p = Print()
- p.flags = self.flags
- p.precision = self.precision
-
- if isinstance(self.value, (list, tuple)):
- if not len(self.value):
- return
-
- mytotal = reduce(lambda x,y: float(x) + float(y), self.value)
- mycdf = 0.0
-
- value = self.value
-
- if display_all:
- subnames = [ '[%d]' % i for i in range(len(value)) ]
- else:
- subnames = [''] * len(value)
-
- if 'subnames' in self.__dict__:
- for i,each in enumerate(self.subnames):
- if len(each) > 0:
- subnames[i] = '.%s' % each
-
- subdescs = [self.desc]*len(value)
- if 'subdescs' in self.__dict__:
- for i in range(min(len(value), len(self.subdescs))):
- subdescs[i] = self.subdescs[i]
-
- for val,sname,sdesc in map(None, value, subnames, subdescs):
- if mytotal > 0.0:
- mypdf = float(val) / float(mytotal)
- mycdf += mypdf
- if (self.flags & flags_pdf):
- p.pdf = mypdf
- p.cdf = mycdf
-
- if len(sname) == 0:
- continue
-
- p.name = self.name + sname
- p.desc = sdesc
- p.value = val
- p.display()
-
- if (self.flags & flags_total):
- if ('pdf' in p.__dict__): del p.__dict__['pdf']
- if ('cdf' in p.__dict__): del p.__dict__['cdf']
- p.name = self.name + '.total'
- p.desc = self.desc
- p.value = mytotal
- p.display()
-
- else:
- p.name = self.name
- p.desc = self.desc
- p.value = self.value
- p.display()
-
diff --git a/util/stats/profile.py b/util/stats/profile.py
deleted file mode 100644
index bed8088..0000000
--- a/util/stats/profile.py
+++ /dev/null
@@ -1,502 +0,0 @@
-# Copyright (c) 2005 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from . import output
-
-class FileData(dict):
- def __init__(self, filename):
- self.filename = filename
- fd = file(filename)
- current = []
- for line in fd:
- line = line.strip()
- if line.startswith('>>>'):
- current = []
- self[line[3:]] = current
- else:
- current.append(line)
- fd.close()
-
-class RunData(dict):
- def __init__(self, filename):
- self.filename = filename
-
- def __getattribute__(self, attr):
- if attr == 'total':
- total = 0.0
- for value in self.values():
- total += value
- return total
-
- if attr == 'filedata':
- return FileData(self.filename)
-
- if attr == 'maxsymlen':
- return max([ len(sym) for sym in self.keys() ])
-
- return super(RunData, self).__getattribute__(attr)
-
- def display(self, output=None, limit=None, maxsymlen=None):
- if not output:
- import sys
- output = sys.stdout
- elif isinstance(output, str):
- output = file(output, 'w')
-
- total = float(self.total)
-
- # swap (string,count) order so we can sort on count
- symbols = [ (count,name) for name,count in self.items() ]
- symbols.sort(reverse=True)
- if limit is not None:
- symbols = symbols[:limit]
-
- if not maxsymlen:
- maxsymlen = self.maxsymlen
-
- symbolf = "%-" + str(maxsymlen + 1) + "s %.2f%%"
- for number,name in symbols:
- print(symbolf % (name, 100.0 * (float(number) / total)),
- file=output)
-
-class PCData(RunData):
- def __init__(self, filename=None, categorize=None, showidle=True):
- super(PCData, self).__init__(self, filename)
-
- filedata = self.filedata['PC data']
- for line in filedata:
- (symbol, count) = line.split()
- if symbol == "0x0":
- continue
- count = int(count)
-
- if categorize is not None:
- category = categorize(symbol)
- if category is None:
- category = 'other'
- elif category == 'idle' and not showidle:
- continue
-
- self[category] = count
-
-class FuncNode(object):
- def __new__(cls, filedata=None):
- if filedata is None:
- return super(FuncNode, cls).__new__(cls)
-
- nodes = {}
- for line in filedata['function data']:
- data = line.split(' ')
- node_id = int(data[0], 16)
- node = FuncNode()
- node.symbol = data[1]
- if node.symbol == '':
- node.symbol = 'unknown'
- node.count = int(data[2])
- node.children = [ int(child, 16) for child in data[3:] ]
- nodes[node_id] = node
-
- for node in nodes.values():
- children = []
- for cid in node.children:
- child = nodes[cid]
- children.append(child)
- child.parent = node
- node.children = tuple(children)
- if not nodes:
- print(filedata.filename)
- print(nodes)
- return nodes[0]
-
- def total(self):
- total = self.count
- for child in self.children:
- total += child.total()
-
- return total
-
- def aggregate(self, dict, categorize, incategory):
- category = None
- if categorize:
- category = categorize(self.symbol)
-
- total = self.count
- for child in self.children:
- total += child.aggregate(dict, categorize, category or incategory)
-
- if category:
- dict[category] = dict.get(category, 0) + total
- return 0
- elif not incategory:
- dict[self.symbol] = dict.get(self.symbol, 0) + total
-
- return total
-
- def dump(self):
- kids = [ child.symbol for child in self.children]
- print('%s %d <%s>' % (self.symbol, self.count, ', '.join(kids)))
- for child in self.children:
- child.dump()
-
- def _dot(self, dot, threshold, categorize, total):
- from pydot import Dot, Edge, Node
- self.dot_node = None
-
- value = self.total() * 100.0 / total
- if value < threshold:
- return
- if categorize:
- category = categorize(self.symbol)
- if category and category != 'other':
- return
- label = '%s %.2f%%' % (self.symbol, value)
- self.dot_node = Node(self, label=label)
- dot.add_node(self.dot_node)
-
- for child in self.children:
- child._dot(dot, threshold, categorize, total)
- if child.dot_node is not None:
- dot.add_edge(Edge(self, child))
-
- def _cleandot(self):
- for child in self.children:
- child._cleandot()
- self.dot_node = None
- del self.__dict__['dot_node']
-
- def dot(self, dot, threshold=0.1, categorize=None):
- self._dot(dot, threshold, categorize, self.total())
- self._cleandot()
-
-class FuncData(RunData):
- def __init__(self, filename, categorize=None):
- super(FuncData, self).__init__(filename)
- tree = self.tree
- tree.aggregate(self, categorize, incategory=False)
- self.total = tree.total()
-
- def __getattribute__(self, attr):
- if attr == 'tree':
- return FuncNode(self.filedata)
- return super(FuncData, self).__getattribute__(attr)
-
- def displayx(self, output=None, maxcount=None):
- if output is None:
- import sys
- output = sys.stdout
-
- items = [ (val,key) for key,val in self.items() ]
- items.sort(reverse=True)
- for val,key in items:
- if maxcount is not None:
- if maxcount == 0:
- return
- maxcount -= 1
-
- percent = val * 100.0 / self.total
- print('%-30s %8s' % (key, '%3.2f%%' % percent), file=output)
-
-class Profile(object):
- # This list controls the order of values in stacked bar data output
- default_categories = [ 'interrupt',
- 'driver',
- 'stack',
- 'buffer',
- 'copy',
- 'syscall',
- 'user',
- 'other',
- 'idle']
-
- def __init__(self, datatype, categorize=None):
- categories = Profile.default_categories
-
- self.datatype = datatype
- self.categorize = categorize
- self.data = {}
- self.categories = categories[:]
- self.rcategories = categories[:]
- self.rcategories.reverse()
- self.cpu = 0
-
- # Read in files
- def inputdir(self, directory):
- import os, os.path, re
- from os.path import expanduser, join as joinpath
-
- directory = expanduser(directory)
- label_ex = re.compile(r'profile\.(.*).dat')
- for root,dirs,files in os.walk(directory):
- for name in files:
- match = label_ex.match(name)
- if not match:
- continue
-
- filename = joinpath(root, name)
- prefix = os.path.commonprefix([root, directory])
- dirname = root[len(prefix)+1:]
- data = self.datatype(filename, self.categorize)
- self.setdata(dirname, match.group(1), data)
-
- def setdata(self, run, cpu, data):
- if run not in self.data:
- self.data[run] = {}
-
- if cpu in self.data[run]:
- raise AttributeError(
- 'data already stored for run %s and cpu %s' % (run, cpu))
-
- self.data[run][cpu] = data
-
- def getdata(self, run, cpu):
- try:
- return self.data[run][cpu]
- except KeyError:
- print(run, cpu)
- return None
-
- def alldata(self):
- for run,cpus in self.data.items():
- for cpu,data in cpus.items():
- yield run,cpu,data
-
- def get(self, job, stat, system=None):
- if system is None and hasattr('system', job):
- system = job.system
-
- if system is None:
- raise AttributeError('The job must have a system set')
-
- cpu = '%s.run%d' % (system, self.cpu)
-
- data = self.getdata(str(job), cpu)
- if not data:
- return None
-
- values = []
- for category in self.categories:
- val = float(data.get(category, 0.0))
- if val < 0.0:
- raise ValueError('value is %f' % val)
- values.append(val)
- total = sum(values)
- return [ v / total * 100.0 for v in values ]
-
- def dump(self):
- for run,cpu,data in self.alldata():
- print('run %s, cpu %s' % (run, cpu))
- data.dump()
- print()
-
- def write_dot(self, threshold, jobfile=None, jobs=None):
- import pydot
-
- if jobs is None:
- jobs = [ job for job in jobfile.jobs() ]
-
- for job in jobs:
- cpu = '%s.run%d' % (job.system, self.cpu)
- symbols = self.getdata(job.name, cpu)
- if not symbols:
- continue
-
- dot = pydot.Dot()
- symbols.tree.dot(dot, threshold=threshold)
- dot.write(symbols.filename[:-3] + 'dot')
-
- def write_txt(self, jobfile=None, jobs=None, limit=None):
- if jobs is None:
- jobs = [ job for job in jobfile.jobs() ]
-
- for job in jobs:
- cpu = '%s.run%d' % (job.system, self.cpu)
- symbols = self.getdata(job.name, cpu)
- if not symbols:
- continue
-
- output = file(symbols.filename[:-3] + 'txt', 'w')
- symbols.display(output, limit)
-
- def display(self, jobfile=None, jobs=None, limit=None):
- if jobs is None:
- jobs = [ job for job in jobfile.jobs() ]
-
- maxsymlen = 0
-
- thejobs = []
- for job in jobs:
- cpu = '%s.run%d' % (job.system, self.cpu)
- symbols = self.getdata(job.name, cpu)
- if symbols:
- thejobs.append(job)
- maxsymlen = max(maxsymlen, symbols.maxsymlen)
-
- for job in thejobs:
- cpu = '%s.run%d' % (job.system, self.cpu)
- symbols = self.getdata(job.name, cpu)
- print(job.name)
- symbols.display(limit=limit, maxsymlen=maxsymlen)
- print()
-
-
-from .categories import func_categorize, pc_categorize
-class PCProfile(Profile):
- def __init__(self, categorize=pc_categorize):
- super(PCProfile, self).__init__(PCData, categorize)
-
-
-class FuncProfile(Profile):
- def __init__(self, categorize=func_categorize):
- super(FuncProfile, self).__init__(FuncData, categorize)
-
-def usage(exitcode = None):
- print('''\
-Usage: %s [-bc] [-g <dir>] [-j <jobfile>] [-n <num>]
-
- -c groups symbols into categories
- -b dumps data for bar charts
- -d generate dot output
- -g <d> draw graphs and send output to <d>
- -j <jobfile> specify a different jobfile (default is Test.py)
- -n <n> selects number of top symbols to print (default 5)
-''' % sys.argv[0])
-
- if exitcode is not None:
- sys.exit(exitcode)
-
-if __name__ == '__main__':
- import getopt, re, sys
- from os.path import expanduser
- from .output import StatOutput
-
- # default option values
- numsyms = 10
- graph = None
- cpus = [ 0 ]
- categorize = False
- showidle = True
- funcdata = True
- jobfilename = 'Test.py'
- dodot = False
- dotfile = None
- textout = False
- threshold = 0.01
- inputfile = None
-
- try:
- opts, args = getopt.getopt(sys.argv[1:], 'C:cdD:f:g:ij:n:pT:t')
- except getopt.GetoptError:
- usage(2)
-
- for o,a in opts:
- if o == '-C':
- cpus = [ int(x) for x in a.split(',') ]
- elif o == '-c':
- categorize = True
- elif o == '-D':
- dotfile = a
- elif o == '-d':
- dodot = True
- elif o == '-f':
- inputfile = expanduser(a)
- elif o == '-g':
- graph = a
- elif o == '-i':
- showidle = False
- elif o == '-j':
- jobfilename = a
- elif o == '-n':
- numsyms = int(a)
- elif o == '-p':
- funcdata = False
- elif o == '-T':
- threshold = float(a)
- elif o == '-t':
- textout = True
-
- if args:
- print("'%s'" % args, len(args))
- usage(1)
-
- if inputfile:
- catfunc = None
- if categorize:
- catfunc = func_categorize
- data = FuncData(inputfile, categorize=catfunc)
-
- if dodot:
- import pydot
- dot = pydot.Dot()
- data.tree.dot(dot, threshold=threshold)
- #dot.orientation = 'landscape'
- #dot.ranksep='equally'
- #dot.rank='samerank'
- dot.write(dotfile, format='png')
- else:
- data.display(limit=numsyms)
-
- else:
- from jobfile import JobFile
- jobfile = JobFile(jobfilename)
-
- if funcdata:
- profile = FuncProfile()
- else:
- profile = PCProfile()
-
- if not categorize:
- profile.categorize = None
- profile.inputdir(jobfile.rootdir)
-
- if graph:
- for cpu in cpus:
- profile.cpu = cpu
- if funcdata:
- name = 'funcstacks%d' % cpu
- else:
- name = 'stacks%d' % cpu
- output = StatOutput(jobfile, info=profile)
- output.xlabel = 'System Configuration'
- output.ylabel = '% CPU utilization'
- output.stat = name
- output.graph(name, graph)
-
- if dodot:
- for cpu in cpus:
- profile.cpu = cpu
- profile.write_dot(jobfile=jobfile, threshold=threshold)
-
- if textout:
- for cpu in cpus:
- profile.cpu = cpu
- profile.write_txt(jobfile=jobfile)
-
- if not graph and not textout and not dodot:
- for cpu in cpus:
- if not categorize:
- profile.categorize = None
- profile.cpu = cpu
- profile.display(jobfile=jobfile, limit=numsyms)
diff --git a/util/stats/stats.py b/util/stats/stats.py
deleted file mode 100755
index 00e5d1e..0000000
--- a/util/stats/stats.py
+++ /dev/null
@@ -1,484 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright (c) 2003-2004 The Regents of The University of Michigan
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import re, sys, math
-
-def usage():
- print('''\
-Usage: %s [-E] [-F] [ -G <get> ] [-d <db> ] [-g <graphdir> ] [-h <host>] [-p]
- [-s <system>] [-r <runs> ] [-T <samples>] [-u <username>]
- <command> [command args]
-
- commands extra parameters description
- ----------- ------------------ ---------------------------------------
- formula <formula> Evaluated formula specified
- formulas [regex] List formulas (only matching regex)
- runs none List all runs in database
- samples none List samples present in database
- stability <pairnum> <stats> Calculated statistical info about stats
- stat <regex> Show stat data (only matching regex)
- stats [regex] List all stats (only matching regex)
-
- database <command> Where command is drop, init, or clean
-
-''' % sys.argv[0])
- sys.exit(1)
-
-def getopts(list, flags):
- import getopt
- try:
- opts, args = getopt.getopt(list, flags)
- except getopt.GetoptError:
- usage()
-
- return opts, args
-
-class CommandException(Exception):
- pass
-
-def commands(options, command, args):
- if command == 'database':
- if len(args) == 0: raise CommandException
-
- from . import dbinit
- mydb = dbinit.MyDB(options)
-
- if args[0] == 'drop':
- if len(args) > 2: raise CommandException
- mydb.admin()
- mydb.drop()
- if len(args) == 2 and args[1] == 'init':
- mydb.create()
- mydb.connect()
- mydb.populate()
- mydb.close()
- return
-
- if args[0] == 'init':
- if len(args) > 1: raise CommandException
- mydb.admin()
- mydb.create()
- mydb.connect()
- mydb.populate()
- mydb.close()
- return
-
- if args[0] == 'clean':
- if len(args) > 1: raise CommandException
- mydb.connect()
- mydb.clean()
- return
-
- raise CommandException
-
- from . import db
- source = db.Database()
- source.host = options.host
- source.db = options.db
- source.passwd = options.passwd
- source.user = options.user
- source.connect()
- #source.update_dict(globals())
-
- if type(options.method) is str:
- source.method = options.method
-
- if options.runs is None:
- runs = source.allRuns
- else:
- rx = re.compile(options.runs)
- runs = []
- for run in source.allRuns:
- if rx.match(run.name):
- runs.append(run)
-
- if command == 'runs':
- user = None
- opts, args = getopts(args, '-u')
- if len(args):
- raise CommandException
- for o,a in opts:
- if o == '-u':
- user = a
- source.listRuns(user)
- return
-
- if command == 'stats':
- if len(args) == 0:
- source.listStats()
- elif len(args) == 1:
- source.listStats(args[0])
- else:
- raise CommandException
-
- return
-
- if command == 'formulas':
- if len(args) == 0:
- source.listFormulas()
- elif len(args) == 1:
- source.listFormulas(args[0])
- else:
- raise CommandException
-
- return
-
- if command == 'samples':
- if len(args):
- raise CommandException
-
- source.listTicks(runs)
- return
-
- if command == 'stability':
- if len(args) < 2:
- raise CommandException
-
- try:
- merge = int(args[0])
- except ValueError:
- usage()
- stats = source.getStat(args[1])
- source.method = 'sum'
-
- def disp(*args):
- print("%-35s %12s %12s %4s %5s %5s %5s %10s" % args)
-
- # temporary variable containing a bunch of dashes
- d = '-' * 100
-
- #loop through all the stats selected
- for stat in stats:
- print("%s:" % stat.name)
- disp("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV",
- "SAMP", "CV")
- disp(d[:35], d[:12], d[:12], d[:4], d[:5], d[:5], d[:5], d[:10])
-
- #loop through all the selected runs
- for run in runs:
- runTicks = source.retTicks([ run ])
- #throw away the first one, it's 0
- runTicks.pop(0)
- source.ticks = runTicks
- avg = 0
- stdev = 0
- numoutsideavg = 0
- numoutside1std = 0
- numoutside2std = 0
- pairRunTicks = []
- if value(stat, run.run) == 1e300*1e300:
- continue
- for t in range(0, len(runTicks)-(merge-1), merge):
- tempPair = []
- for p in range(0,merge):
- tempPair.append(runTicks[t+p])
- pairRunTicks.append(tempPair)
- #loop through all the various ticks for each run
- for tick in pairRunTicks:
- source.ticks = tick
- avg += value(stat, run.run)
- avg /= len(pairRunTicks)
- for tick in pairRunTicks:
- source.ticks = tick
- val = value(stat, run.run)
- stdev += pow((val-avg),2)
- stdev = math.sqrt(stdev / len(pairRunTicks))
- for tick in pairRunTicks:
- source.ticks = tick
- val = value(stat, run.run)
- if (val < (avg * .9)) or (val > (avg * 1.1)):
- numoutsideavg += 1
- if (val < (avg - stdev)) or (val > (avg + stdev)):
- numoutside1std += 1
- if (val < (avg - (2*stdev))) or (val > (avg + (2*stdev))):
- numoutside2std += 1
- if avg > 1000:
- disp(run.name, "%.1f" % avg, "%.1f" % stdev,
- "%d" % numoutsideavg, "%d" % numoutside1std,
- "%d" % numoutside2std, "%d" % len(pairRunTicks),
- "%.3f" % (stdev/avg*100))
- elif avg > 100:
- disp(run.name, "%.1f" % avg, "%.1f" % stdev,
- "%d" % numoutsideavg, "%d" % numoutside1std,
- "%d" % numoutside2std, "%d" % len(pairRunTicks),
- "%.5f" % (stdev/avg*100))
- else:
- disp(run.name, "%.5f" % avg, "%.5f" % stdev,
- "%d" % numoutsideavg, "%d" % numoutside1std,
- "%d" % numoutside2std, "%d" % len(pairRunTicks),
- "%.7f" % (stdev/avg*100))
- return
-
- if command == 'all':
- if len(args):
- raise CommandException
-
- all = [ 'bps', 'misses', 'mpkb', 'ipkb', 'pps', 'bpt' ]
- for command in all:
- commands(options, command, args)
-
- if options.ticks:
- if not options.graph:
- print('only displaying sample %s' % options.ticks)
- source.ticks = [ int(x) for x in options.ticks.split() ]
-
- from .output import StatOutput
- output = StatOutput(options.jobfile, source)
- output.xlabel = 'System Configuration'
- output.colormap = 'RdYlGn'
-
- if command == 'stat' or command == 'formula':
- if len(args) != 1:
- raise CommandException
-
- if command == 'stat':
- stats = source.getStat(args[0])
- if command == 'formula':
- stats = eval(args[0])
-
- for stat in stats:
- output.stat = stat
- output.ylabel = stat.name
- if options.graph:
- output.graph(stat.name, options.graphdir)
- else:
- output.display(stat.name, options.printmode)
-
- return
-
- if len(args):
- raise CommandException
-
- from .info import ProxyGroup
- proxy = ProxyGroup(system = source[options.system])
- system = proxy.system
-
- etherdev = system.tsunami.etherdev0
- bytes = etherdev.rxBytes + etherdev.txBytes
- kbytes = bytes / 1024
- packets = etherdev.rxPackets + etherdev.txPackets
-
- def display():
- if options.graph:
- output.graph(command, options.graphdir, proxy)
- else:
- output.display(command, options.printmode)
-
- if command == 'ticks':
- output.stat = system.run0.numCycles
-
- display()
- return
-
- if command == 'bytes':
- output.stat = bytes
- display()
- return
-
- if command == 'packets':
- output.stat = packets
- display()
- return
-
- if command == 'ppt' or command == 'tpp':
- output.stat = packets / system.run0.numCycles
- output.invert = command == 'tpp'
- display()
- return
-
- if command == 'pps':
- output.stat = packets / source['sim_seconds']
- output.ylabel = 'Packets/s'
- display()
- return
-
- if command == 'bpt' or command == 'tpb':
- output.stat = bytes / system.run0.numCycles * 8
- output.ylabel = 'bps / Hz'
- output.invert = command == 'tpb'
- display()
- return
-
- if command in ('rxbps', 'txbps', 'bps'):
- if command == 'rxbps':
- output.stat = etherdev.rxBandwidth / 1e9
- if command == 'txbps':
- output.stat = etherdev.txBandwidth / 1e9
- if command == 'bps':
- output.stat = (etherdev.rxBandwidth + etherdev.txBandwidth) / 1e9
-
- output.ylabel = 'Bandwidth (Gbps)'
- output.ylim = [ 0.0, 10.0 ]
- display()
- return
-
- if command == 'bpp':
- output.stat = bytes / packets
- output.ylabel = 'Bytes / Packet'
- display()
- return
-
- if command == 'rxbpp':
- output.stat = etherdev.rxBytes / etherdev.rxPackets
- output.ylabel = 'Receive Bytes / Packet'
- display()
- return
-
- if command == 'txbpp':
- output.stat = etherdev.txBytes / etherdev.txPackets
- output.ylabel = 'Transmit Bytes / Packet'
- display()
- return
-
- if command == 'rtp':
- output.stat = etherdev.rxPackets / etherdev.txPackets
- output.ylabel = 'rxPackets / txPackets'
- display()
- return
-
- if command == 'rtb':
- output.stat = etherdev.rxBytes / etherdev.txBytes
- output.ylabel = 'rxBytes / txBytes'
- display()
- return
-
- misses = system.l2.overall_mshr_misses
-
- if command == 'misses':
- output.stat = misses
- output.ylabel = 'Overall MSHR Misses'
- display()
- return
-
- if command == 'mpkb':
- output.stat = misses / (bytes / 1024)
- output.ylabel = 'Misses / KB'
- display()
- return
-
- if command == 'ipkb':
- interrupts = system.run0.kern.faults[4]
- output.stat = interrupts / kbytes
- output.ylabel = 'Interrupts / KB'
- display()
- return
-
- if command == 'execute':
- output.stat = system.run0.ISSUE__count
- display()
- return
-
- if command == 'commit':
- output.stat = system.run0.COM__count
- display()
- return
-
- if command == 'fetch':
- output.stat = system.run0.FETCH__count
- display()
- return
-
- raise CommandException
-
-
-class Options: pass
-
-if __name__ == '__main__':
- import getpass
-
- options = Options()
- options.host = None
- options.db = None
- options.passwd = ''
- options.user = getpass.getuser()
- options.runs = None
- options.system = 'client'
- options.method = None
- options.graph = False
- options.ticks = False
- options.printmode = 'G'
- jobfilename = None
- options.jobfile = None
- options.all = False
-
- opts, args = getopts(sys.argv[1:], '-EFJad:g:h:j:m:pr:s:u:T:')
- for o,a in opts:
- if o == '-E':
- options.printmode = 'E'
- if o == '-F':
- options.printmode = 'F'
- if o == '-a':
- options.all = True
- if o == '-d':
- options.db = a
- if o == '-g':
- options.graph = True;
- options.graphdir = a
- if o == '-h':
- options.host = a
- if o == '-J':
- jobfilename = None
- if o == '-j':
- jobfilename = a
- if o == '-m':
- options.method = a
- if o == '-p':
- options.passwd = getpass.getpass()
- if o == '-r':
- options.runs = a
- if o == '-u':
- options.user = a
- if o == '-s':
- options.system = a
- if o == '-T':
- options.ticks = a
-
- if jobfilename:
- from jobfile import JobFile
- options.jobfile = JobFile(jobfilename)
- if not options.host:
- options.host = options.jobfile.dbhost
- if not options.db:
- options.db = options.jobfile.statdb
-
- if not options.host:
- sys.exit('Database server must be provided from a jobfile or -h')
-
- if not options.db:
- sys.exit('Database name must be provided from a jobfile or -d')
-
- if len(args) == 0:
- usage()
-
- command = args[0]
- args = args[1:]
-
- try:
- commands(options, command, args)
- except CommandException:
- usage()