Totally re-work the way that jobfiles are done so there is more
authorNathan Binkert <binkertn@umich.edu>
Sat, 17 Sep 2005 20:51:26 +0000 (16:51 -0400)
committerNathan Binkert <binkertn@umich.edu>
Sat, 17 Sep 2005 20:51:26 +0000 (16:51 -0400)
information that can be used for other aspects of sending jobs.
New graphing output stuff with matplotlib.

util/pbs/job.py:
    Shuffle code around and create the JobDir class which encapsulates
    all of the functionality needed for making, organizing, and cleaning
    a job directory.
    Better status output
util/pbs/jobfile.py:
    Majory re-working of the jobfile code.
    A job file now consists of several objects that describe how
    jobs should be run, it includes information about checkpoints,
    and graphing.
util/pbs/send.py:
    use the new jobfile code.
    deal with the 15 character limit of pbs by truncating the name and
    using the raj hack.
util/stats/db.py:
    fix the __str__ function for nodes
    provide __getitem__ for the Database class
util/stats/stats.py:
    use the jobfile stuff to figure out what the proper naming
    and organziation of the graphs should be.
    move all output code to output.py, get rid of ploticus and use
    matplotlib

--HG--
rename : util/categories.py => util/stats/categories.py
extra : convert_revision : 0d793cbf6ad9492290e8ec875ce001c84095e1f7

12 files changed:
util/categories.py [deleted file]
util/pbs/job.py
util/pbs/jobfile.py
util/pbs/send.py
util/stats/__init__.py [new file with mode: 0644]
util/stats/barchart.py [new file with mode: 0644]
util/stats/categories.py [new file with mode: 0644]
util/stats/db.py
util/stats/orderdict.py [new file with mode: 0644]
util/stats/output.py [new file with mode: 0644]
util/stats/profile.py [new file with mode: 0644]
util/stats/stats.py

diff --git a/util/categories.py b/util/categories.py
deleted file mode 100644 (file)
index 877e548..0000000
+++ /dev/null
@@ -1,1811 +0,0 @@
-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' : 'bufmgt', #
-    'Trap_Dtbmiss_double' : 'bufmgt', #
-    'Trap_Interrupt' : 'interrupt', #
-    'Trap_Itbmiss' : 'bufmgt', #
-    'Trap_Unalign' : 'alignment',
-    'UNALIGN_NO_DISMISS' : 'alignment',
-    'UNALIGN_NO_DISMISS_10_' : 'alignment',
-    '__alloc_pages' : 'bufmgt', # mm/page_alloc.c,
-    '__anon_vma_link': 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c,
-    '__filemap_fdatawrite' : 'bufmgt', # 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' : 'bufmgt', # mm/page_alloc.c,
-    '__free_pages_ok': 'bufmgt', # mm/page_alloc.c,
-    '__generic_file_aio_read': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
-    '__kmalloc' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
-    '__load_new_mm_context': 'bufmgt',
-    '__lookup': 'other', # lib/radix-tree.c,
-    '__lookup_hash': 'other', # fs/namei.c,
-    '__lookup_tag' : 'bufmgt', # 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' : 'bufmgt', # mm/swap.c,
-    '__pagevec_free': 'bufmgt', # mm/page_alloc.c, include/linux/pagevec.h,
-    '__pagevec_lru_add' : 'bufmgt', # mm/swap.c, include/linux/pagevec.h,
-    '__pagevec_lru_add_active': 'bufmgt', # mm/swap.c, include/linux/pagevec.h,
-    '__pagevec_release' : 'bufmgt', # 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' : 'bufmgt', # lib/rbtree.c,
-    '__rb_rotate_left' : 'bufmgt', # lib/rbtree.c,
-    '__rb_rotate_right' : 'bufmgt', # lib/rbtree.c,
-    '__rcu_process_callbacks': 'other', #
-    '__read_page_state' : 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    '__remove_shared_vm_struct': 'bufmgt', # mm/mmap.c,
-    '__remqu' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
-    '__rmqueue' : 'bufmgt', # 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' : 'bufmgt', # mm/page-writeback.c, include/linux/mm.h,
-    '__sk_stream_mem_reclaim' : 'bufmgt', # 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': 'bufmgt', # mm/mmap.c,
-    '__vma_link_rb': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    'add_to_page_cache_lru' : 'bufmgt', # 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' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
-    'alloc_slabmgmt' : 'bufmgt', # mm/slab.c,
-    'alpha_switch_to' : 'other', # include/asm-alpha/system.h,
-    'anon_vma_link': 'bufmgt', # mm/rmap.c, include/linux/rmap.h, include/linux/rmap.h,
-    'anon_vma_prepare': 'bufmgt', # mm/rmap.c, include/linux/rmap.h, include/linux/rmap.h,
-    'anon_vma_unlink': 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
-    'apache': 'other', #
-    'apic_timer_interrupt': 'interrupt', # include/asm-i386/hw_irq.h,
-    'arch_get_unmapped_area': 'bufmgt',
-    'arch_get_unmapped_area_1': 'bufmgt',
-    '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' : 'bufmgt', # mm/page_alloc.c,
-    'balance_dirty_pages' : 'bufmgt', # mm/page-writeback.c,
-    'balance_dirty_pages_ratelimited' : 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/page_alloc.c,
-    'cache_alloc_refill' : 'bufmgt', # mm/slab.c,
-    'cache_check' : 'other', # net/sunrpc/cache.c, include/linux/sunrpc/cache.h,
-    'cache_flusharray' : 'bufmgt', # mm/slab.c,
-    'cache_grow' : 'bufmgt', # mm/slab.c,
-    'cache_init_objs' : 'bufmgt', # mm/slab.c,
-    'cache_reap': 'bufmgt', # mm/slab.c,
-    'cached_lookup': 'other', # fs/namei.c,
-    'call_rcu' : 'other', # kernel/rcupdate.c,
-    'can_share_swap_page': 'bufmgt', # mm/swapfile.c, include/linux/swap.h, include/linux/swap.h,
-    'can_vma_merge_after': 'bufmgt', # mm/mmap.c,
-    'can_vma_merge_before': 'bufmgt', # 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' : 'bufmgt', # include/asm-alpha/page.h,
-    'clear_page_dirty_for_io' : 'bufmgt', # mm/page-writeback.c, include/linux/mm.h,
-    'clear_page_tables': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/memory.c,
-    'do_bindings' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat_core.h,
-    'do_brk': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # mm/truncate.c,
-    'do_lookup' : 'user', # fs/namei.c,  used to by syscall
-    'do_mmap_pgoff': 'bufmgt', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
-    'do_mpage_readpage': 'other', # fs/mpage.c,
-    'do_mremap': 'bufmgt', # mm/mremap.c,
-    'do_munmap': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # mm/memory.c,
-    'do_writepages' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt',
-    '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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # mm/readahead.c, include/linux/fs.h,
-    'file_read_actor': 'bufmgt', # mm/filemap.c, include/linux/fs.h,
-    'filemap_fdatawait' : 'bufmgt', # mm/filemap.c, include/linux/fs.h,
-    'filemap_fdatawrite' : 'bufmgt', # mm/filemap.c, include/linux/fs.h,
-    'filemap_nopage': 'bufmgt', # 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': 'bufmgt', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
-    'find_get_page' : 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    'find_get_pages': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    'find_get_pages_tag' : 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    'find_mergeable_anon_vma': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/mmap.c, mm/nommu.c, include/linux/mm.h, used to be syscall
-    'find_vma_prepare': 'bufmgt', # mm/mmap.c,
-    'find_vma_prev': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/page_alloc.c,
-    'free_hot_page' : 'bufmgt', # mm/page_alloc.c,
-    'free_page_and_swap_cache': 'bufmgt', # mm/swap_state.c, include/linux/swap.h, include/linux/swap.h,
-    'free_pages' : 'bufmgt', # mm/page_alloc.c, drivers/char/drm/drm_memory_debug.h, drivers/md/raid6.h, drivers/char/drm/drmP.h,
-    'free_pages_bulk': 'bufmgt', # mm/page_alloc.c,
-    'free_pgtables': 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/fs.h,
-    'generic_file_aio_write': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/mremap.c,
-    'get_page_state': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
-    'kfree_skbmem' : 'bufmgt', # 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': 'bufmgt', # include/asm-i386/highmem.h,
-    'kmap_atomic': 'bufmgt', # include/linux/highmem.h, include/asm-i386/highmem.h,
-    'kmap_high': 'bufmgt', # mm/highmem.c,
-    'kmem_cache_alloc' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
-    'kmem_cache_free' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
-    'kmem_flagcheck' : 'bufmgt', # mm/slab.c,
-    'kmem_freepages' : 'bufmgt', # mm/slab.c,
-    'kmem_getpages' : 'bufmgt', # 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': 'bufmgt', # include/linux/highmem.h, include/asm-i386/highmem.h,
-    'kunmap_atomic': 'bufmgt', # include/linux/highmem.h, include/asm-i386/highmem.h,
-    'kunmap_high': 'bufmgt', # 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' : 'bufmgt', # mm/swap.c, include/linux/swap.h,
-    'lru_cache_add' : 'bufmgt', # mm/swap.c,
-    'lru_cache_add_active': 'bufmgt', # mm/swap.c,
-    'lru_put_front' : 'other', # fs/nfsd/nfscache.c,
-    'ls': 'driver', # drivers/fc4/fc.c,
-    'mail': 'other', #
-    'mapping_tagged' : 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
-    'mempool_alloc_slab' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
-    'mempool_free' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
-    'mempool_free_slab' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
-    'memscan' : 'copy', # lib/string.c,
-    'mkdir': 'other', #
-    'mm_alloc': 'bufmgt', # 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': 'bufmgt', # mm/mremap.c,
-    'move_vma': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
-    'page_add_file_rmap': 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
-    'page_address': 'bufmgt', # mm/highmem.c, include/linux/mm.h, include/linux/mm.h, include/linux/mm.h,
-    'page_cache_readahead': 'bufmgt', # mm/readahead.c, include/linux/mm.h,
-    'page_fault': 'interrupt', #
-    'page_remove_rmap': 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
-    'page_slot': 'bufmgt', # mm/highmem.c,
-    'page_symlink' : 'other', # fs/namei.c, include/linux/fs.h,
-    'page_waitqueue' : 'bufmgt', # mm/filemap.c,
-    'pagevec_lookup': 'bufmgt', # mm/swap.c, include/linux/pagevec.h,
-    'pagevec_lookup_tag' : 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # arch/alpha/mm/init.c, include/asm-alpha/pgalloc.h, include/asm-i386/pgalloc.h,
-    'pgd_ctor': 'bufmgt', # include/asm-i386/pgtable.h,
-    'pgd_free': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/prio_tree.c,
-    'prio_tree_insert': 'bufmgt', # mm/prio_tree.c,
-    'prio_tree_remove': 'bufmgt', # mm/prio_tree.c,
-    'prio_tree_replace': 'bufmgt', # 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': 'bufmgt', # mm/memory.c,
-    'pte_alloc_one': 'bufmgt', # 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' : 'bufmgt', # lib/rbtree.c, include/linux/rbtree.h,
-    'rb_insert_color' : 'bufmgt', # lib/rbtree.c, include/linux/rbtree.h,
-    'rb_next' : 'bufmgt', # lib/rbtree.c, fs/jffs2/nodelist.h, include/linux/rbtree.h,
-    'rb_prev' : 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    'remove_suid' : 'bufmgt', # mm/filemap.c, include/linux/fs.h,
-    'remove_vm_struct': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/highmem.c, include/linux/mm.h, include/linux/mm.h, include/linux/mm.h,
-    'set_page_dirty': 'bufmgt', # mm/page-writeback.c,
-    'set_slab_attr' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # net/core/sock.c,
-    'sk_free' : 'bufmgt', # net/core/sock.c,
-    'sk_reset_timer' : 'bufmgt', # net/core/sock.c,
-    'sk_stop_timer' : 'bufmgt', # net/core/sock.c,
-    'sk_stream_kill_queues' : 'bufmgt', # net/core/stream.c,
-    'sk_stream_mem_schedule' : 'bufmgt', # net/core/stream.c,
-    'sk_stream_rfree' : 'bufmgt', # net/core/stream.c,
-    'sk_stream_wait_close' : 'bufmgt', # net/core/stream.c,
-    'sk_stream_wait_memory' : 'bufmgt', # net/core/stream.c,
-    'sk_stream_write_space' : 'bufmgt', # net/core/stream.c,
-    'sk_wait_data' : 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
-    'skb_drop_fraglist' : 'bufmgt', # net/core/skbuff.c,
-    'skb_free_datagram' : 'bufmgt', # net/core/datagram.c, include/linux/skbuff.h,
-    'skb_queue_head': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
-    'skb_queue_tail' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
-    'skb_read_and_csum_bits' : 'bufmgt', # net/sunrpc/xprt.c,
-    'skb_recv_datagram' : 'bufmgt', # net/core/datagram.c, include/linux/skbuff.h,
-    'skb_release_data' : 'bufmgt', # net/core/skbuff.c, net/core/dev.c,
-    'skip_atoi': 'other', # lib/vsprintf.c,
-    'slab_destroy' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/page-writeback.c, include/linux/page-flags.h,
-    'test_clear_page_writeback' : 'bufmgt', # mm/page-writeback.c, include/linux/page-flags.h,
-    'test_set_page_writeback' : 'bufmgt', # 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': 'bufmgt', # mm/truncate.c,
-    'truncate_inode_pages': 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c,
-    'unmap_mapping_range': 'bufmgt', # mm/memory.c, include/linux/mm.h,
-    'unmap_page_range': 'bufmgt', # mm/memory.c,
-    'unmap_region': 'bufmgt', # mm/mmap.c,
-    'unmap_underlying_metadata' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
-    'unmap_vma': 'bufmgt', # mm/mmap.c,
-    'unmap_vma_list': 'bufmgt', # mm/mmap.c,
-    'unmap_vmas': 'bufmgt', # 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': 'bufmgt', # mm/mmap.c, include/linux/mm.h,
-    'vma_link': 'bufmgt', # mm/mmap.c,
-    'vma_merge': 'bufmgt', # mm/mmap.c, include/linux/mm.h,
-    'vma_prio_tree_add': 'bufmgt', # mm/prio_tree.c, include/linux/mm.h,
-    'vma_prio_tree_insert': 'bufmgt', # mm/prio_tree.c, include/linux/mm.h,
-    'vma_prio_tree_remove': 'bufmgt', # mm/prio_tree.c, include/linux/mm.h,
-    'vmstat_open': 'other', # fs/proc/proc_misc.c,
-    'vmstat_show': 'bufmgt', # mm/page_alloc.c,
-    'vmtruncate': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c,
-    'wake_up_process' : 'other', # kernel/sched.c,
-    'wake_up_state' : 'other', # kernel/sched.c,
-    'wb_timer_fn': 'bufmgt', # 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': 'bufmgt', # mm/memory.c,
-    'zap_pte_range': 'bufmgt', # mm/memory.c,
-    'zone_statistics' : 'bufmgt', # 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': 'bufmgt',
-    'sock_common_setsockopt': 'stack',
-    'sock_sendpage': 'copy',
-
-#
-#   New functions
-#
-
-    '__alloc_percpu': 'bufmgt', # 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': 'bufmgt', # mm/page-writeback.c, mm/page-writeback.c,
-    'bad_page': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', #
-    'drain_cpu_caches': 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
-    'find_undo': 'bufmgt', # ipc/sem.c,
-    'find_user': 'bufmgt', # 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': 'bufmgt', # mm/readahead.c, include/linux/mm.h,
-    'free_percpu': 'bufmgt', # mm/slab.c, include/linux/percpu.h, include/linux/percpu.h,
-    'generic_file_sendfile': 'bufmgt', # mm/filemap.c, include/linux/fs.h,
-    'get_one_pte_map': 'bufmgt', # 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': 'bufmgt', # mm/slab.c,
-    'kmem_ptr_validate': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', #
-    'sys_capset': 'other', # kernel/capability.c, include/linux/syscalls.h,
-    'sys_fadvise64': 'bufmgt', # mm/fadvise.c, include/linux/syscalls.h,
-    'sys_fadvise64_64': 'bufmgt', # 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': 'bufmgt', # 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', #
-}
-
-categories_re = [
-#    ( re.compile('.*'), 'other' )
-]
-
-
index f370862de22c883da5852af9cd51a0dcbcf74c5b..e2636c111043ab186d0c82025cff7dd5cc6d0272 100755 (executable)
 #          Steve Reinhardt
 #          Ali Saidi
 
-import os, os.path, shutil, signal, socket, sys, time
+import os, os.path, shutil, signal, socket, sys
 from os import environ as env
 from os.path import join as joinpath, expanduser
 
+def date():
+    import time
+    return time.strftime('%a %b %e %H:%M:%S %Z %Y', time.localtime())
+
+def cleandir(dir):
+    for root, dirs, files in os.walk(dir, False):
+        for name in files:
+            os.remove(joinpath(root, name))
+        for name in dirs:
+            os.rmdir(joinpath(root, name))
+
 class rsync:
     def __init__(self):
         self.sudo = False
@@ -61,25 +72,76 @@ class rsync:
 
         return os.spawnvp(os.P_WAIT, args[0], args)
 
-def cleandir(dir):
-    for root, dirs, files in os.walk(dir, False):
-        for name in files:
-            os.remove(joinpath(root, name))
-        for name in dirs:
-            os.rmdir(joinpath(root, name))
+class JobDir(object):
+    def __init__(self, dir):
+        self.dir = dir
 
-def date():
-    return time.strftime('%a %b %e %H:%M:%S %Z %Y', time.localtime())
+    def file(self, filename):
+        return joinpath(self.dir, filename)
+
+    def create(self):
+        if os.path.exists(self.dir):
+            if not os.path.isdir(self.dir):
+                sys.exit('%s is not a directory.  Cannot build job' % self.dir)
+        else:
+            os.mkdir(self.dir)
+
+    def exists(self):
+        return os.path.isdir(self.dir)
+
+    def clean(self):
+        cleandir(self.dir)
+
+    def hasfile(self, filename):
+        return os.path.isfile(self.file(filename))
+
+    def echofile(self, filename, string):
+        filename = self.file(filename)
+        try:
+            f = file(filename, 'w')
+            print >>f, string
+            f.flush()
+            f.close()
+        except IOError,e:
+            sys.exit(e)
 
-def remfile(file):
-    if os.path.isfile(file):
-        os.unlink(file)
+    def rmfile(self, filename):
+        filename = self.file(filename)
+        if os.path.isfile(filename):
+            os.unlink(filename)
 
-def readval(filename):
-    file = open(filename, 'r')
-    value = file.readline().strip()
-    file.close()
-    return value
+    def readval(self, filename):
+        filename = self.file(filename)
+        f = file(filename, 'r')
+        value = f.readline().strip()
+        f.close()
+        return value
+
+    def setstatus(self, string):
+        filename = self.file('.status')
+        try:
+            f = file(filename, 'a')
+            print >>f, string
+            f.flush()
+            f.close()
+        except IOError,e:
+            sys.exit(e)
+
+    def getstatus(self):
+        filename = self.file('.status')
+        try:
+            f = file(filename, 'r')
+        except IOError, e:
+            return 'none'
+
+        # fast forward to the end
+        for line in f: pass
+
+        # the first word on the last line is the status
+        return line.split(' ')[0]
+
+    def __str__(self):
+        return self.dir
 
 if __name__ == '__main__':
     rootdir = env.setdefault('ROOTDIR', os.getcwd())
@@ -97,29 +159,27 @@ if __name__ == '__main__':
         workbase = "/tmp/"
 
     workdir = joinpath(workbase, '%s.%s' % (env['USER'], pbs_jobid))
-
-    def echofile(filename, string):
-        try:
-            f = file(joinpath(outdir, filename), 'w')
-            print >>f, string
-            f.flush()
-            f.close()
-        except IOError,e:
-            sys.exit(e)
+    host = socket.gethostname()
 
     os.umask(0022)
 
-    echofile('.start', date())
-    echofile('.pbs_jobid', pbs_jobid)
-    echofile('.pbs_jobname', pbs_jobid)
-    echofile('.host', socket.gethostname())
+    jobdir = JobDir(outdir)
+
+    started = date()
+    jobdir.echofile('.running', started)
+    jobdir.rmfile('.queued')
+    jobdir.echofile('.pbs_jobid', pbs_jobid)
+    jobdir.echofile('.pbs_jobname', pbs_jobid)
+    jobdir.echofile('.host', host)
+
+    jobdir.setstatus('running on %s on %s' % (host, started))
 
     if os.path.isdir(workdir):
         cleandir(workdir)
     else:
         os.mkdir(workdir)
 
-    if os.path.isdir('/z/dist'):
+    if False and os.path.isdir('/z/dist'):
         sync = rsync()
         sync.delete = True
         sync.sudo = True
@@ -130,13 +190,13 @@ if __name__ == '__main__':
     except OSError,e:
         sys.exit(e)
 
-    os.symlink(joinpath(outdir, 'output'), 'status.out')
+    os.symlink(jobdir.file('output'), 'status.out')
 
     args = [ joinpath(basedir, 'm5'), joinpath(basedir, 'run.py') ]
     if not len(args):
         sys.exit("no arguments")
 
-    print 'starting job... %s' % date()
+    print 'starting job... %s' % started
     print ' '.join(args)
     print
     sys.stdout.flush()
@@ -145,7 +205,7 @@ if __name__ == '__main__':
     if not childpid:
         # Execute command
         sys.stdin.close()
-        fd = os.open(joinpath(outdir, "output"),
+        fd = os.open(jobdir.file("output"),
                      os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
         os.dup2(fd, sys.stdout.fileno())
         os.dup2(fd, sys.stderr.fileno())
@@ -170,12 +230,15 @@ if __name__ == '__main__':
             thepid,ec = os.waitpid(childpid, 0)
             if ec:
                 print 'Exit code ', ec
-                echofile('.failure', date())
+                status = 'failure'
             else:
-                echofile('.success', date())
+                status = 'success'
             done = 1
         except OSError:
             pass
 
-    print '\njob complete... %s' % date()
-    echofile('.stop', date())
+    complete = date()
+    print '\njob complete... %s' % complete
+    jobdir.echofile('.%s' % status, complete)
+    jobdir.rmfile('.running')
+    jobdir.setstatus('%s on %s' % (status, complete))
index 83eb813586ce1770e005a01fdd1b712da5a84ae5..d36b5ee6d3fcd261f9b21c1dac2d87928dc0ac18 100644 (file)
 #
 # Authors: Nathan Binkert
 
-from os.path import expanduser, isfile, join as joinpath
 import sys
 
-def crossproduct(options):
-    number = len(options)
-    indexes = [ 0 ] * number
-    maxes = [ len(opt) for opt in options ]
-    def next():
-        for i in xrange(number - 1, -1, -1):
-            indexes[i] += 1
-            if indexes[i] < maxes[i]:
+class ternary(object):
+    def __new__(cls, *args):
+        if len(args) > 1:
+            raise TypeError, \
+                  '%s() takes at most 1 argument (%d given)' % \
+                  (cls.__name__, len(args))
+
+        if args:
+            if not isinstance(args[0], (bool, ternary)):
+                raise TypeError, \
+                      '%s() argument must be True, False, or Any' % \
+                      cls.__name__
+            return args[0]
+        return super(ternary, cls).__new__(cls)
+
+    def __bool__(self):
+        return True
+
+    def __neg__(self):
+        return self
+
+    def __eq__(self, other):
+        return True
+
+    def __ne__(self, other):
+        return False
+
+    def __str__(self):
+        return 'Any'
+
+    def __repr__(self):
+        return 'Any'
+
+Any = ternary()
+
+class Flags(dict):
+    def __init__(self, *args, **kwargs):
+        super(Flags, self).__init__()
+        self.update(*args, **kwargs)
+
+    def __getattr__(self, attr):
+        return self[attr]
+
+    def __setattr__(self, attr, value):
+        self[attr] = value
+
+    def __setitem__(self, item, value):
+        return super(Flags, self).__setitem__(item, ternary(value))
+
+    def __getitem__(self, item):
+        if item not in self:
+            return False
+        return super(Flags, self).__getitem__(item)
+
+    def update(self, *args, **kwargs):
+        for arg in args:
+            if isinstance(arg, Flags):
+                super(Flags, self).update(arg)
+            elif isinstance(arg, dict):
+                for key,val in kwargs.iteritems():
+                    self[key] = val
+            else:
+                raise AttributeError, \
+                      'flags not of type %s or %s, but %s' % \
+                      (Flags, dict, type(arg))
+
+        for key,val in kwargs.iteritems():
+            self[key] = val
+
+    def match(self, *args, **kwargs):
+        match = Flags(*args, **kwargs)
+
+        for key,value in match.iteritems():
+            if self[key] != value:
                 return False
 
-            indexes[i] = 0
         return True
 
-    done = False
-    while not done:
-        result = []
-        for i in xrange(number):
-            result.append(options[i][indexes[i]])
-        yield result
-        done = next()
-
-class JobFile(object):
-    def __init__(self, jfile):
-        self.data = {}
-        jfile = expanduser(jfile)
-        if not isfile(jfile):
-            for p in sys.path:
-                if isfile(joinpath(p, jfile)):
-                    jfile = joinpath(p, jfile)
-                    break
-
-        execfile(jfile, self.data)
-        self.options = self.data['options']
-        self.environment = self.data['environment']
-        self.jobinfo = {}
-        self.jobs = []
-        for job in crossproduct(self.options):
-            jobname = '.'.join([ id[0] for id in job ])
-            self.jobs.append(jobname)
-            list = []
-            for info in job:
-                for item in info[1:]:
-                    list.append(item)
-            self.jobinfo[jobname] = list
-
-    def env(self, jobname):
-        env = {}
-        for key,val in self.jobinfo[jobname]:
-            env[key] = val
-
-        for key,val in self.environment:
-            env[key] = val
-        return env
-
-    def printinfo(self, jobname):
-        print '%s:' % jobname
-        for key,val in self.jobinfo[jobname]:
-            print '    %s = %s' % (key, val)
-
-        for key,val in self.environment:
-            print '    %s = %s' % (key, val)
+def crossproduct(items):
+    if not isinstance(items, (list, tuple)):
+        raise AttributeError, 'crossproduct works only on sequences'
+
+    if not items:
+        yield None
+        return
+
+    current = items[0]
+    remainder = items[1:]
+
+    if not hasattr(current, '__iter__'):
+        current = [ current ]
+
+    for item in current:
+        for rem in crossproduct(remainder):
+            data = [ item ]
+            if rem:
+                data += rem
+            yield data
+
+def flatten(items):
+    if not isinstance(items, (list, tuple)):
+        yield items
+        return
+
+    for item in items:
+        for flat in flatten(item):
+            yield flat
+
+class Data(object):
+    def __init__(self, name, desc, **kwargs):
+        self.name = name
+        self.desc = desc
+        self.system = None
+        self.flags = Flags()
+        self.env = {}
+        for k,v in kwargs.iteritems():
+            setattr(self, k, v)
+
+    def update(self, obj):
+        if not isinstance(obj, Data):
+            raise AttributeError, "can only update from Data object"
+
+        self.env.update(obj.env)
+        self.flags.update(obj.flags)
+        if obj.system:
+            if self.system and self.system != obj.system:
+                raise AttributeError, \
+                      "conflicting values for system: '%s'/'%s'" % \
+                      (self.system, obj.system)
+            self.system = obj.system
+
+    def printinfo(self):
+        if self.name:
+            print 'name: %s' % self.name
+        if self.desc:
+            print 'desc: %s' % self.desc
+        if self.system:
+            print 'system: %s' % self.system
+
+    def printverbose(self):
+        print 'flags:'
+        keys = self.flags.keys()
+        keys.sort()
+        for key in keys:
+            print '    %s = %s' % (key, self.flags[key])
+        print 'env:'
+        keys = self.env.keys()
+        keys.sort()
+        for key in keys:
+            print '    %s = %s' % (key, self.env[key])
+        print
+
+    def __str__(self):
+        return self.name
+
+class Job(Data):
+    def __init__(self, options):
+        super(Job, self).__init__('', '')
+        self.setoptions(options)
+
+        self.checkpoint = False
+        opts = []
+        for opt in options:
+            cpt = opt.group.checkpoint
+            if not cpt:
+                self.checkpoint = True
+                continue
+            if isinstance(cpt, Option):
+                opt = cpt.clone(suboptions=False)
+            else:
+                opt = opt.clone(suboptions=False)
+
+            opts.append(opt)
+
+        if not opts:
+            self.checkpoint = False
+
+        if self.checkpoint:
+            self.checkpoint = Job(opts)
+
+    def clone(self):
+        return Job(self.options)
+
+    def __getattribute__(self, attr):
+        if attr == 'name':
+            names = [ ]
+            for opt in self.options:
+                if opt.name:
+                    names.append(opt.name)
+            return ':'.join(names)
+
+        if attr == 'desc':
+            descs = [ ]
+            for opt in self.options:
+                if opt.desc:
+                    descs.append(opt.desc)
+            return ', '.join(descs)
+
+        return super(Job, self).__getattribute__(attr)
+
+    def setoptions(self, options):
+        config = options[0].config
+        for opt in options:
+            if opt.config != config:
+                raise AttributeError, \
+                      "All options are not from the same Configuration"
+
+        self.config = config
+        self.groups = [ opt.group for opt in options ]
+        self.options = options
+
+        self.update(self.config)
+        for group in self.groups:
+            self.update(group)
+
+        for option in self.options:
+            self.update(option)
+            if option._suboption:
+                self.update(option._suboption)
+
+    def printinfo(self):
+        super(Job, self).printinfo()
+        if self.checkpoint:
+            print 'checkpoint: %s' % self.checkpoint.name
+        print 'config: %s' % self.config.name
+        print 'groups: %s' % [ g.name for g in self.groups ]
+        print 'options: %s' % [ o.name for o in self.options ]
+        super(Job, self).printverbose()
+
+class SubOption(Data):
+    def __init__(self, name, desc, **kwargs):
+        super(SubOption, self).__init__(name, desc, **kwargs)
+        self.number = None
+
+class Option(Data):
+    def __init__(self, name, desc, **kwargs):
+        super(Option, self).__init__(name, desc, **kwargs)
+        self._suboptions = []
+        self._suboption = None
+        self.number = None
+
+    def __getattribute__(self, attr):
+        if attr == 'name':
+            name = self.__dict__[attr]
+            if self._suboption is not None:
+                name = '%s:%s' % (name, self._suboption.name)
+            return name
+
+        if attr == 'desc':
+            desc = self.__dict__[attr]
+            if self._suboption is not None:
+                desc = '%s, %s' % (desc, self._suboption.desc)
+            return desc
+
+        return super(Option, self).__getattribute__(attr)
+
+    def suboption(self, name, desc, **kwargs):
+        subo = SubOption(name, desc, **kwargs)
+        subo.config = self.config
+        subo.group = self.group
+        subo.option = self
+        subo.number = len(self._suboptions)
+        self._suboptions.append(subo)
+        return subo
+
+    def clone(self, suboptions=True):
+        option = Option(self.__dict__['name'], self.__dict__['desc'])
+        option.update(self)
+        option.group = self.group
+        option.config = self.config
+        option.number = self.number
+        if suboptions:
+            option._suboptions.extend(self._suboptions)
+            option._suboption = self._suboption
+        return option
+
+    def subopts(self):
+        if not self._suboptions:
+            return [ self ]
+
+        subopts = []
+        for subo in self._suboptions:
+            option = self.clone()
+            option._suboption = subo
+            subopts.append(option)
+
+        return subopts
+
+    def printinfo(self):
+        super(Option, self).printinfo()
+        print 'config: %s' % self.config.name
+        super(Option, self).printverbose()
+
+class Group(Data):
+    def __init__(self, name, desc, **kwargs):
+        super(Group, self).__init__(name, desc, **kwargs)
+        self._options = []
+        self.checkpoint = False
+        self.number = None
+
+    def option(self, name, desc, **kwargs):
+        opt = Option(name, desc, **kwargs)
+        opt.config = self.config
+        opt.group = self
+        opt.number = len(self._options)
+        self._options.append(opt)
+        return opt
+
+    def options(self):
+        return self._options
+
+    def subopts(self):
+        subopts = []
+        for opt in self._options:
+            for subo in opt.subopts():
+                subopts.append(subo)
+        return subopts
+
+    def printinfo(self):
+        super(Group, self).printinfo()
+        print 'config: %s' % self.config.name
+        print 'options: %s' % [ o.name for o in self._options ]
+        super(Group, self).printverbose()
+
+class Configuration(Data):
+    def __init__(self, name, desc, **kwargs):
+        super(Configuration, self).__init__(name, desc, **kwargs)
+        self._groups = []
+
+    def group(self, name, desc, **kwargs):
+        grp = Group(name, desc, **kwargs)
+        grp.config = self
+        grp.number = len(self._groups)
+        self._groups.append(grp)
+        return grp
+
+    def groups(self, flags=Flags(), sign=True):
+        if not flags:
+            return self._groups
+
+        return [ grp for grp in self._groups if sign ^ grp.flags.match(flags) ]
+
+    def checkchildren(self, kids):
+        for kid in kids:
+            if kid.config != self:
+                raise AttributeError, "child from the wrong configuration"
+
+    def sortgroups(self, groups):
+        groups = [ (grp.number, grp) for grp in groups ]
+        groups.sort()
+        return [ grp[1] for grp in groups ]
+
+    def options(self, groups = None, checkpoint = False):
+        if groups is None:
+            groups = self._groups
+        self.checkchildren(groups)
+        groups = self.sortgroups(groups)
+        if checkpoint:
+            groups = [ grp for grp in groups if grp.checkpoint ]
+            optgroups = [ g.options() for g in groups ]
+        else:
+            optgroups = [ g.subopts() for g in groups ]
+        for options in crossproduct(optgroups):
+            for opt in options:
+                cpt = opt.group.checkpoint
+                if not isinstance(cpt, bool) and cpt != opt:
+                    if checkpoint:
+                        break
+                    else:
+                        yield options
+            else:
+                if checkpoint:
+                    yield options
+
+    def checkpoints(self, groups = None):
+        for options in self.options(groups, True):
+            yield Job(options)
+
+    def jobs(self, groups = None):
+        for options in self.options(groups, False):
+            yield Job(options)
+
+    def alljobs(self, groups = None):
+        for options in self.options(groups, True):
+            yield Job(options)
+        for options in self.options(groups, False):
+            yield Job(options)
+
+    def find(self, jobname):
+        for job in self.alljobs():
+            if job.name == jobname:
+                return job
+        else:
+            raise AttributeError, "job '%s' not found" % jobname
+
+    def job(self, options):
+        self.checkchildren(options)
+        options = [ (opt.group.number, opt) for opt in options ]
+        options.sort()
+        options = [ opt[1] for opt in options ]
+        job = Job(options)
+        return job
+
+    def printinfo(self):
+        super(Configuration, self).printinfo()
+        print 'groups: %s' % [ g.name for g in self._grouips ]
+        super(Configuration, self).printverbose()
+
+def JobFile(jobfile):
+    from os.path import expanduser, isfile, join as joinpath
+    filename = expanduser(jobfile)
+
+    # Can't find filename in the current path, search sys.path
+    if not isfile(filename):
+        for path in sys.path:
+            testname = joinpath(path, filename)
+            if isfile(testname):
+                filename = testname
+                break
+        else:
+            raise AttributeError, \
+                  "Could not find file '%s'" % jobfile
+
+    data = {}
+    execfile(filename, data)
+    if 'conf' not in data:
+        raise ImportError, 'cannot import name conf from %s' % jobfile
+    conf = data['conf']
+    import jobfile
+    if not isinstance(conf, Configuration):
+        raise AttributeError, \
+              'conf in jobfile: %s (%s) is not type %s' % \
+              (jobfile, type(conf), Configuration)
+    return conf
+
+if __name__ == '__main__':
+    from jobfile import *
+    import sys
+
+    usage = 'Usage: %s [-b] [-c] [-v] <jobfile>' % sys.argv[0]
+
+    try:
+        import getopt
+        opts, args = getopt.getopt(sys.argv[1:], '-bcv')
+    except getopt.GetoptError:
+        sys.exit(usage)
+
+    if len(args) != 1:
+        raise AttributeError, usage
+
+    both = False
+    checkpoint = False
+    verbose = False
+    for opt,arg in opts:
+        if opt == '-b':
+            both = True
+            checkpoint = True
+        if opt == '-c':
+            checkpoint = True
+        if opt == '-v':
+            verbose = True
+
+    jobfile = args[0]
+    conf = JobFile(jobfile)
+
+    if both:
+        gen = conf.alljobs()
+    elif checkpoint:
+        gen = conf.checkpoints()
+    else:
+        gen = conf.jobs()
+
+    for job in gen:
+        if not verbose:
+            cpt = ''
+            if job.checkpoint:
+                cpt = job.checkpoint.name
+            print job.name, cpt
+        else:
+            job.printinfo()
index ecb0be0ec7c65a4537b9e9c3e805d6abc443e436..c66fb1c0569e7b2168a2e2422b285905b2e2ae48 100755 (executable)
@@ -96,7 +96,7 @@ Usage:
 
 try:
     import getopt
-    opts, args = getopt.getopt(sys.argv[1:], '-cd:efhj:lq:v')
+    opts, args = getopt.getopt(sys.argv[1:], '-CRcd:efhj:lq:v')
 except getopt.GetoptError:
     sys.exit(usage)
 
@@ -107,13 +107,18 @@ force = False
 listonly = False
 queue = ''
 verbose = False
-rootdir = nfspath(os.getcwd())
-jfile = 'test.py'
+jfile = 'Base/test.py'
+docpts = False
+doruns = True
+runflag = False
+
 for opt,arg in opts:
+    if opt == '-C':
+        docpts = True
+    if opt == '-R':
+        runflag = True
     if opt == '-c':
         clean = True
-    if opt == '-d':
-        rootdir = arg
     if opt == '-e':
         onlyecho = True
     if opt == '-f':
@@ -130,95 +135,123 @@ for opt,arg in opts:
     if opt == '-v':
         verbose = True
 
-basedir = joinpath(rootdir, 'Base')
-linkdir = joinpath(rootdir, 'Link')
+if docpts:
+    doruns = runflag
 
 for arg in args:
     exprs.append(re.compile(arg))
 
-if not listonly and not onlyecho and isdir(linkdir):
+import jobfile, pbs
+from job import JobDir, date
+
+conf = jobfile.JobFile(jfile)
+
+if not listonly and not onlyecho and isdir(conf.linkdir):
     if verbose:
         print 'Checking for outdated files in Link directory'
-    syncdir(linkdir, basedir)
+    syncdir(conf.linkdir, conf.basedir)
 
-import job, jobfile, pbs
+jobnames = {}
+joblist = []
 
-test = jobfile.JobFile(joinpath(basedir, jfile))
+if docpts and doruns:
+    gen = conf.alljobs()
+elif docpts:
+    gen = conf.checkpoints()
+elif doruns:
+    gen = conf.jobs()
 
-joblist = []
-for jobname in test.jobs:
-    if not exprs:
-        joblist.append(jobname)
+for job in gen:
+    if job.name in jobnames:
         continue
 
-    for expr in exprs:
-        if expr.match(jobname):
-            joblist.append(jobname)
-            break
+    if exprs:
+        for expr in exprs:
+            if expr.match(job.name):
+                joblist.append(job)
+                break
+    else:
+        joblist.append(job)
 
 if listonly:
     if verbose:
-        for jobname in joblist:
-            test.printinfo(jobname)
+        for job in joblist:
+            job.printinfo()
     else:
-        for jobname in joblist:
-            print jobname
+        for job in joblist:
+            print job.name
     sys.exit(0)
 
 if not onlyecho:
-    jl = []
-    for jobname in joblist:
-        jobdir = joinpath(rootdir, jobname)
-        if os.path.exists(jobname):
+    newlist = []
+    for job in joblist:
+        jobdir = JobDir(joinpath(conf.rootdir, job.name))
+        if jobdir.exists():
             if not force:
-                if os.path.isfile(joinpath(jobdir, '.success')):
+                status = jobdir.getstatus()
+                if status == 'queued':
+                    continue
+
+                if status == 'running':
                     continue
 
-                if os.path.isfile(joinpath(jobdir, '.start')) and \
-                       not os.path.isfile(joinpath(jobdir, '.stop')):
+                if status == 'success':
                     continue
 
             if not clean:
-                sys.exit('job directory not clean!')
+                sys.exit('job directory %s not clean!' % jobdir)
 
-            job.cleandir(jobdir)
-        else:
-            os.mkdir(jobdir)
-        jl.append(jobname)
-    joblist = jl
-
-def setname(jobid, jobname):
-    # since pbs can handle jobnames of 15 characters or less, don't
-    # use the raj hack.
-    if len(jobname) <= 15:
-        return
-
-    import socket
-    s = socket.socket()
-    # Connect to pbs.pool and send the jobid/jobname pair to port
-    # 24465 (Raj didn't realize that there are only 64k ports and
-    # setup inetd to point to port 90001)
-    s.connect(("pbs.pool", 24465))
-    s.send("%s %s\n" % (jobid, jobname))
-    s.close()
-
-for jobname in joblist:
-    jobdir = joinpath(rootdir, jobname)
-
-    if not onlyecho and not os.path.isdir(jobdir):
-        sys.exit('%s is not a directory.  Cannot build job' % jobdir)
-
-    print 'Job name:       %s' % jobname
+            jobdir.clean()
+        newlist.append(job)
+    joblist = newlist
+
+class NameHack(object):
+    def __init__(self, host='pbs.pool', port=24465):
+        self.host = host
+        self.port = port
+        self.socket = None
+
+    def setname(self, jobid, jobname):
+        try:
+            jobid = int(jobid)
+        except ValueError:
+            jobid = int(jobid.strip().split('.')[0])
+
+        jobname = jobname.strip()
+        # since pbs can handle jobnames of 15 characters or less,
+        # don't use the raj hack.
+        if len(jobname) <= 15:
+            return
+
+        if self.socket is None:
+            import socket
+            self.socket = socket.socket()
+            # Connect to pbs.pool and send the jobid/jobname pair to port
+            # 24465 (Raj didn't realize that there are only 64k ports and
+            # setup inetd to point to port 90001)
+            self.socket.connect((self.host, self.port))
+
+        self.socket.send("%s %s\n" % (jobid, jobname))
+
+namehack = NameHack()
+
+for job in joblist:
+    jobdir = JobDir(joinpath(conf.rootdir, job.name))
+
+    if not onlyecho:
+        jobdir.create()
+
+    print 'Job name:       %s' % job.name
     print 'Job directory:  %s' % jobdir
 
     qsub = pbs.qsub()
     qsub.pbshost = 'simpool.eecs.umich.edu'
-    qsub.stdout = joinpath(jobdir, 'jobout')
-    qsub.name = jobname[:15]
+    qsub.stdout = jobdir.file('jobout')
+    qsub.name = job.name[:15]
     qsub.join = True
     qsub.node_type = 'FAST'
-    qsub.env['ROOTDIR'] = rootdir
-    qsub.env['JOBNAME'] = jobname
+    qsub.env['ROOTDIR'] = conf.rootdir
+    qsub.env['JOBNAME'] = job.name
     if len(queue):
         qsub.queue = queue
     qsub.build(joinpath(progpath, 'job.py'))
@@ -231,6 +264,9 @@ for jobname in joblist:
         if ec == 0:
             jobid = qsub.result
             print 'PBS Jobid:      %s' % jobid
-            setname(jobid, jobname)
+            namehack.setname(jobid, job.name)
+            queued = date()
+            jobdir.echofile('.queued', queued)
+            jobdir.setstatus('queued on %s' % queued)
         else:
             print 'PBS Failed'
diff --git a/util/stats/__init__.py b/util/stats/__init__.py
new file mode 100644 (file)
index 0000000..b9968bf
--- /dev/null
@@ -0,0 +1,28 @@
+# 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.
+#
+# Authors: Nathan Binkert
+
diff --git a/util/stats/barchart.py b/util/stats/barchart.py
new file mode 100644 (file)
index 0000000..a2cbea8
--- /dev/null
@@ -0,0 +1,246 @@
+# 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.
+#
+# Authors: Nathan Binkert
+#          Lisa Hsu
+
+import matplotlib, pylab
+from matplotlib.numerix import array, arange, reshape, shape, transpose, zeros
+from matplotlib.numerix import Float
+
+matplotlib.interactive(False)
+
+class BarChart(object):
+    def __init__(self, **kwargs):
+        self.init(**kwargs)
+
+    def init(self, **kwargs):
+        self.colormap = 'jet'
+        self.inputdata = None
+        self.chartdata = None
+        self.xlabel = None
+        self.ylabel = None
+        self.legend = None
+        self.xticks = None
+        self.yticks = None
+        self.title = None
+
+        for key,value in kwargs.iteritems():
+            self.__setattr__(key, value)
+
+    def gen_colors(self, count):
+        cmap = matplotlib.cm.get_cmap(self.colormap)
+        if count == 1:
+            return cmap([ 0.5 ])
+        else:
+            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)
+
+    # 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!"
+
+        self.figure = pylab.figure()
+        self.axes = self.figure.add_subplot(111)
+
+        dim = len(shape(self.inputdata))
+        cshape = shape(self.chartdata)
+        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)
+
+        bars_in_group = len(self.chartdata)
+        if bars_in_group < 5:
+            width = 1.0 / ( bars_in_group + 1)
+            center = width / 2
+        else:
+            width = .8 / bars_in_group
+            center = .1
+
+        bars = []
+        for i,stackdata in enumerate(self.chartdata):
+            bottom = array([0] * len(stackdata[0]))
+            stack = []
+            for j,bardata in enumerate(stackdata):
+                bardata = array(bardata)
+                ind = arange(len(bardata)) + i * width + center
+                bar = self.axes.bar(ind, bardata, width, bottom=bottom,
+                                    color=colors[i][j])
+                stack.append(bar)
+                bottom += bardata
+            bars.append(stack)
+
+        if self.xlabel is not None:
+            self.axes.set_xlabel(self.xlabel)
+
+        if self.ylabel is not None:
+            self.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
+            self.axes.set_yticks(ticks)
+            self.axes.set_yticklabels(self.yticks)
+
+        if self.xticks is not None:
+            self.axes.set_xticks(arange(cshape[2]) + .5)
+            self.axes.set_xticklabels(self.xticks)
+
+        if self.legend is not None:
+            if dim == 1:
+                lbars = bars[0][0]
+            if dim == 2:
+                lbars = [ bars[i][0][0] for i in xrange(len(bars))]
+            if dim == 3:
+                number = len(bars[0])
+                lbars = [ bars[0][number - j - 1][0] for j in xrange(number)]
+
+            self.axes.legend(lbars, self.legend, loc='best')
+
+        if self.title is not None:
+            self.axes.set_title(self.title)
+
+    def savefig(self, name):
+        self.figure.savefig(name)
+
+if __name__ == '__main__':
+    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 xrange(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 xrange(myshape[-1]) ]
+        chart1.xticks = [ 'xtick%d' % x for x in xrange(myshape[0]) ]
+        chart1.title = 'this is the title'
+        chart1.graph()
+        #chart1.savefig('/tmp/test1.png')
+
+    if False:
+        chart2 = BarChart()
+        chart2.data = data
+        chart2.colormap = 'gray'
+        chart2.graph()
+        #chart2.savefig('/tmp/test2.png')
+
+    pylab.show()
diff --git a/util/stats/categories.py b/util/stats/categories.py
new file mode 100644 (file)
index 0000000..0c359b8
--- /dev/null
@@ -0,0 +1,1839 @@
+# 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.
+#
+# Authors: Nathan Binkert
+
+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' : 'bufmgt', #
+    'Trap_Dtbmiss_double' : 'bufmgt', #
+    'Trap_Interrupt' : 'interrupt', #
+    'Trap_Itbmiss' : 'bufmgt', #
+    'Trap_Unalign' : 'alignment',
+    'UNALIGN_NO_DISMISS' : 'alignment',
+    'UNALIGN_NO_DISMISS_10_' : 'alignment',
+    '__alloc_pages' : 'bufmgt', # mm/page_alloc.c,
+    '__anon_vma_link': 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c,
+    '__filemap_fdatawrite' : 'bufmgt', # 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' : 'bufmgt', # mm/page_alloc.c,
+    '__free_pages_ok': 'bufmgt', # mm/page_alloc.c,
+    '__generic_file_aio_read': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
+    '__kmalloc' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
+    '__load_new_mm_context': 'bufmgt',
+    '__lookup': 'other', # lib/radix-tree.c,
+    '__lookup_hash': 'other', # fs/namei.c,
+    '__lookup_tag' : 'bufmgt', # 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' : 'bufmgt', # mm/swap.c,
+    '__pagevec_free': 'bufmgt', # mm/page_alloc.c, include/linux/pagevec.h,
+    '__pagevec_lru_add' : 'bufmgt', # mm/swap.c, include/linux/pagevec.h,
+    '__pagevec_lru_add_active': 'bufmgt', # mm/swap.c, include/linux/pagevec.h,
+    '__pagevec_release' : 'bufmgt', # 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' : 'bufmgt', # lib/rbtree.c,
+    '__rb_rotate_left' : 'bufmgt', # lib/rbtree.c,
+    '__rb_rotate_right' : 'bufmgt', # lib/rbtree.c,
+    '__rcu_process_callbacks': 'other', #
+    '__read_page_state' : 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    '__remove_shared_vm_struct': 'bufmgt', # mm/mmap.c,
+    '__remqu' : 'other', # arch/alpha/kernel/alpha_ksyms.c,
+    '__rmqueue' : 'bufmgt', # 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' : 'bufmgt', # mm/page-writeback.c, include/linux/mm.h,
+    '__sk_stream_mem_reclaim' : 'bufmgt', # 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': 'bufmgt', # mm/mmap.c,
+    '__vma_link_rb': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    'add_to_page_cache_lru' : 'bufmgt', # 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' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
+    'alloc_slabmgmt' : 'bufmgt', # mm/slab.c,
+    'alpha_switch_to' : 'other', # include/asm-alpha/system.h,
+    'anon_vma_link': 'bufmgt', # mm/rmap.c, include/linux/rmap.h, include/linux/rmap.h,
+    'anon_vma_prepare': 'bufmgt', # mm/rmap.c, include/linux/rmap.h, include/linux/rmap.h,
+    'anon_vma_unlink': 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
+    'apache': 'other', #
+    'apic_timer_interrupt': 'interrupt', # include/asm-i386/hw_irq.h,
+    'arch_get_unmapped_area': 'bufmgt',
+    'arch_get_unmapped_area_1': 'bufmgt',
+    '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' : 'bufmgt', # mm/page_alloc.c,
+    'balance_dirty_pages' : 'bufmgt', # mm/page-writeback.c,
+    'balance_dirty_pages_ratelimited' : 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/page_alloc.c,
+    'cache_alloc_refill' : 'bufmgt', # mm/slab.c,
+    'cache_check' : 'other', # net/sunrpc/cache.c, include/linux/sunrpc/cache.h,
+    'cache_flusharray' : 'bufmgt', # mm/slab.c,
+    'cache_grow' : 'bufmgt', # mm/slab.c,
+    'cache_init_objs' : 'bufmgt', # mm/slab.c,
+    'cache_reap': 'bufmgt', # mm/slab.c,
+    'cached_lookup': 'other', # fs/namei.c,
+    'call_rcu' : 'other', # kernel/rcupdate.c,
+    'can_share_swap_page': 'bufmgt', # mm/swapfile.c, include/linux/swap.h, include/linux/swap.h,
+    'can_vma_merge_after': 'bufmgt', # mm/mmap.c,
+    'can_vma_merge_before': 'bufmgt', # 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' : 'bufmgt', # include/asm-alpha/page.h,
+    'clear_page_dirty_for_io' : 'bufmgt', # mm/page-writeback.c, include/linux/mm.h,
+    'clear_page_tables': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/memory.c,
+    'do_bindings' : 'stack', # net/ipv4/netfilter/ip_nat_core.c, include/linux/netfilter_ipv4/ip_nat_core.h,
+    'do_brk': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # mm/truncate.c,
+    'do_lookup' : 'user', # fs/namei.c,  used to by syscall
+    'do_mmap_pgoff': 'bufmgt', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
+    'do_mpage_readpage': 'other', # fs/mpage.c,
+    'do_mremap': 'bufmgt', # mm/mremap.c,
+    'do_munmap': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # mm/memory.c,
+    'do_writepages' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt',
+    '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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # mm/readahead.c, include/linux/fs.h,
+    'file_read_actor': 'bufmgt', # mm/filemap.c, include/linux/fs.h,
+    'filemap_fdatawait' : 'bufmgt', # mm/filemap.c, include/linux/fs.h,
+    'filemap_fdatawrite' : 'bufmgt', # mm/filemap.c, include/linux/fs.h,
+    'filemap_nopage': 'bufmgt', # 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': 'bufmgt', # mm/mmap.c, mm/nommu.c, include/linux/mm.h,
+    'find_get_page' : 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    'find_get_pages': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    'find_get_pages_tag' : 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    'find_mergeable_anon_vma': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/mmap.c, mm/nommu.c, include/linux/mm.h, used to be syscall
+    'find_vma_prepare': 'bufmgt', # mm/mmap.c,
+    'find_vma_prev': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/page_alloc.c,
+    'free_hot_page' : 'bufmgt', # mm/page_alloc.c,
+    'free_page_and_swap_cache': 'bufmgt', # mm/swap_state.c, include/linux/swap.h, include/linux/swap.h,
+    'free_pages' : 'bufmgt', # mm/page_alloc.c, drivers/char/drm/drm_memory_debug.h, drivers/md/raid6.h, drivers/char/drm/drmP.h,
+    'free_pages_bulk': 'bufmgt', # mm/page_alloc.c,
+    'free_pgtables': 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/fs.h,
+    'generic_file_aio_write': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/mremap.c,
+    'get_page_state': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
+    'kfree_skbmem' : 'bufmgt', # 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': 'bufmgt', # include/asm-i386/highmem.h,
+    'kmap_atomic': 'bufmgt', # include/linux/highmem.h, include/asm-i386/highmem.h,
+    'kmap_high': 'bufmgt', # mm/highmem.c,
+    'kmem_cache_alloc' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
+    'kmem_cache_free' : 'bufmgt', # mm/slab.c, include/linux/slab.h,
+    'kmem_flagcheck' : 'bufmgt', # mm/slab.c,
+    'kmem_freepages' : 'bufmgt', # mm/slab.c,
+    'kmem_getpages' : 'bufmgt', # 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': 'bufmgt', # include/linux/highmem.h, include/asm-i386/highmem.h,
+    'kunmap_atomic': 'bufmgt', # include/linux/highmem.h, include/asm-i386/highmem.h,
+    'kunmap_high': 'bufmgt', # 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' : 'bufmgt', # mm/swap.c, include/linux/swap.h,
+    'lru_cache_add' : 'bufmgt', # mm/swap.c,
+    'lru_cache_add_active': 'bufmgt', # mm/swap.c,
+    'lru_put_front' : 'other', # fs/nfsd/nfscache.c,
+    'ls': 'driver', # drivers/fc4/fc.c,
+    'mail': 'other', #
+    'mapping_tagged' : 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
+    'mempool_alloc_slab' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
+    'mempool_free' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
+    'mempool_free_slab' : 'bufmgt', # mm/mempool.c, include/linux/mempool.h,
+    'memscan' : 'copy', # lib/string.c,
+    'mkdir': 'other', #
+    'mm_alloc': 'bufmgt', # 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': 'bufmgt', # mm/mremap.c,
+    'move_vma': 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
+    'page_add_file_rmap': 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
+    'page_address': 'bufmgt', # mm/highmem.c, include/linux/mm.h, include/linux/mm.h, include/linux/mm.h,
+    'page_cache_readahead': 'bufmgt', # mm/readahead.c, include/linux/mm.h,
+    'page_fault': 'interrupt', #
+    'page_remove_rmap': 'bufmgt', # mm/rmap.c, include/linux/rmap.h,
+    'page_slot': 'bufmgt', # mm/highmem.c,
+    'page_symlink' : 'other', # fs/namei.c, include/linux/fs.h,
+    'page_waitqueue' : 'bufmgt', # mm/filemap.c,
+    'pagevec_lookup': 'bufmgt', # mm/swap.c, include/linux/pagevec.h,
+    'pagevec_lookup_tag' : 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # arch/alpha/mm/init.c, include/asm-alpha/pgalloc.h, include/asm-i386/pgalloc.h,
+    'pgd_ctor': 'bufmgt', # include/asm-i386/pgtable.h,
+    'pgd_free': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/prio_tree.c,
+    'prio_tree_insert': 'bufmgt', # mm/prio_tree.c,
+    'prio_tree_remove': 'bufmgt', # mm/prio_tree.c,
+    'prio_tree_replace': 'bufmgt', # 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': 'bufmgt', # mm/memory.c,
+    'pte_alloc_one': 'bufmgt', # 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' : 'bufmgt', # lib/rbtree.c, include/linux/rbtree.h,
+    'rb_insert_color' : 'bufmgt', # lib/rbtree.c, include/linux/rbtree.h,
+    'rb_next' : 'bufmgt', # lib/rbtree.c, fs/jffs2/nodelist.h, include/linux/rbtree.h,
+    'rb_prev' : 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    'remove_suid' : 'bufmgt', # mm/filemap.c, include/linux/fs.h,
+    'remove_vm_struct': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/highmem.c, include/linux/mm.h, include/linux/mm.h, include/linux/mm.h,
+    'set_page_dirty': 'bufmgt', # mm/page-writeback.c,
+    'set_slab_attr' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # net/core/sock.c,
+    'sk_free' : 'bufmgt', # net/core/sock.c,
+    'sk_reset_timer' : 'bufmgt', # net/core/sock.c,
+    'sk_stop_timer' : 'bufmgt', # net/core/sock.c,
+    'sk_stream_kill_queues' : 'bufmgt', # net/core/stream.c,
+    'sk_stream_mem_schedule' : 'bufmgt', # net/core/stream.c,
+    'sk_stream_rfree' : 'bufmgt', # net/core/stream.c,
+    'sk_stream_wait_close' : 'bufmgt', # net/core/stream.c,
+    'sk_stream_wait_memory' : 'bufmgt', # net/core/stream.c,
+    'sk_stream_write_space' : 'bufmgt', # net/core/stream.c,
+    'sk_wait_data' : 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
+    'skb_drop_fraglist' : 'bufmgt', # net/core/skbuff.c,
+    'skb_free_datagram' : 'bufmgt', # net/core/datagram.c, include/linux/skbuff.h,
+    'skb_queue_head': 'stack', # net/core/skbuff.c, include/linux/skbuff.h,
+    'skb_queue_tail' : 'bufmgt', # net/core/skbuff.c, include/linux/skbuff.h,
+    'skb_read_and_csum_bits' : 'bufmgt', # net/sunrpc/xprt.c,
+    'skb_recv_datagram' : 'bufmgt', # net/core/datagram.c, include/linux/skbuff.h,
+    'skb_release_data' : 'bufmgt', # net/core/skbuff.c, net/core/dev.c,
+    'skip_atoi': 'other', # lib/vsprintf.c,
+    'slab_destroy' : 'bufmgt', # 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': 'bufmgt', # 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' : 'bufmgt', # 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': 'bufmgt', # mm/page-writeback.c, include/linux/page-flags.h,
+    'test_clear_page_writeback' : 'bufmgt', # mm/page-writeback.c, include/linux/page-flags.h,
+    'test_set_page_writeback' : 'bufmgt', # 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': 'bufmgt', # mm/truncate.c,
+    'truncate_inode_pages': 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c,
+    'unmap_mapping_range': 'bufmgt', # mm/memory.c, include/linux/mm.h,
+    'unmap_page_range': 'bufmgt', # mm/memory.c,
+    'unmap_region': 'bufmgt', # mm/mmap.c,
+    'unmap_underlying_metadata' : 'other', # fs/buffer.c, include/linux/buffer_head.h,
+    'unmap_vma': 'bufmgt', # mm/mmap.c,
+    'unmap_vma_list': 'bufmgt', # mm/mmap.c,
+    'unmap_vmas': 'bufmgt', # 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': 'bufmgt', # mm/mmap.c, include/linux/mm.h,
+    'vma_link': 'bufmgt', # mm/mmap.c,
+    'vma_merge': 'bufmgt', # mm/mmap.c, include/linux/mm.h,
+    'vma_prio_tree_add': 'bufmgt', # mm/prio_tree.c, include/linux/mm.h,
+    'vma_prio_tree_insert': 'bufmgt', # mm/prio_tree.c, include/linux/mm.h,
+    'vma_prio_tree_remove': 'bufmgt', # mm/prio_tree.c, include/linux/mm.h,
+    'vmstat_open': 'other', # fs/proc/proc_misc.c,
+    'vmstat_show': 'bufmgt', # mm/page_alloc.c,
+    'vmtruncate': 'bufmgt', # 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' : 'bufmgt', # 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' : 'bufmgt', # mm/filemap.c,
+    'wake_up_process' : 'other', # kernel/sched.c,
+    'wake_up_state' : 'other', # kernel/sched.c,
+    'wb_timer_fn': 'bufmgt', # 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': 'bufmgt', # mm/memory.c,
+    'zap_pte_range': 'bufmgt', # mm/memory.c,
+    'zone_statistics' : 'bufmgt', # 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': 'bufmgt',
+    'sock_common_setsockopt': 'stack',
+    'sock_sendpage': 'copy',
+
+#
+#   New functions
+#
+
+    '__alloc_percpu': 'bufmgt', # 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': 'bufmgt', # mm/page-writeback.c, mm/page-writeback.c,
+    'bad_page': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', #
+    'drain_cpu_caches': 'bufmgt', # 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': 'bufmgt', # mm/filemap.c, include/linux/pagemap.h,
+    'find_undo': 'bufmgt', # ipc/sem.c,
+    'find_user': 'bufmgt', # 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': 'bufmgt', # mm/readahead.c, include/linux/mm.h,
+    'free_percpu': 'bufmgt', # mm/slab.c, include/linux/percpu.h, include/linux/percpu.h,
+    'generic_file_sendfile': 'bufmgt', # mm/filemap.c, include/linux/fs.h,
+    'get_one_pte_map': 'bufmgt', # 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': 'bufmgt', # mm/slab.c,
+    'kmem_ptr_validate': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', # 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': 'bufmgt', #
+    'sys_capset': 'other', # kernel/capability.c, include/linux/syscalls.h,
+    'sys_fadvise64': 'bufmgt', # mm/fadvise.c, include/linux/syscalls.h,
+    'sys_fadvise64_64': 'bufmgt', # 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': 'bufmgt', # 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', #
+}
+
+categories_re = [
+#    ( re.compile('.*'), 'other' )
+]
+
+
index 6e1ccec9508062e6725e53c2a5f1cc61a1742ea8..ab005e67bd4308bc22b56dc734bdcc95351d8ab0 100644 (file)
@@ -101,7 +101,7 @@ class Node(object):
     def __init__(self, name):
         self.name = name
     def __str__(self):
-        return name
+        return self.name
 
 class Database(object):
     def __init__(self):
@@ -466,3 +466,6 @@ class Database(object):
 
             runs[data.run][data.x][data.y] = data.data
         return runs
+
+    def __getitem__(self, key):
+        return self.stattop[key]
diff --git a/util/stats/orderdict.py b/util/stats/orderdict.py
new file mode 100644 (file)
index 0000000..816355a
--- /dev/null
@@ -0,0 +1,78 @@
+# 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.
+
+__all__ = [ 'orderdict' ]
+
+class orderdict(dict):
+    def __init__(self, d = {}):
+        self._keys = d.keys()
+        super(orderdict, self).__init__(d)
+
+    def __setitem__(self, key, item):
+        super(orderdict, self).__setitem__(key, item)
+        if not hasattr(self, '_keys'):
+            self._keys = [key,]
+        if key not in self._keys:
+            self._keys.append(key)
+
+    def __delitem__(self, key):
+        super(orderdict, self).__delitem__(key)
+        self._keys.remove(key)
+
+    def clear(self):
+        super(orderdict, self).clear()
+        self._keys = []
+
+    def items(self):
+        for i in self._keys:
+            yield i, self[i]
+
+    def keys(self):
+        return self._keys
+
+    def popitem(self):
+        if len(self._keys) == 0:
+            raise KeyError('dictionary is empty')
+        else:
+            key = self._keys[-1]
+            val = self[key]
+            del self[key]
+            return key, val
+
+    def setdefault(self, key, failobj = None):
+        super(orderdict, self).setdefault(key, failobj)
+        if key not in self._keys:
+            self._keys.append(key)
+
+    def update(self, d):
+        for key in d.keys():
+            if not self.has_key(key):
+                self._keys.append(key)
+        super(orderdict, self).update(d)
+
+    def values(self):
+        for i in self._keys:
+            yield self[i]
diff --git a/util/stats/output.py b/util/stats/output.py
new file mode 100644 (file)
index 0000000..44dba5d
--- /dev/null
@@ -0,0 +1,182 @@
+# 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.
+#
+# Authors: Nathan Binkert
+
+class dbinfo(object):
+    def get(self, job, stat):
+        import info
+
+        run = info.source.allRunNames.get(job.name, None)
+        if run is None:
+            print 'run "%s" not found' % job
+            return None
+
+        stat.system = info.source[job.system]
+        info.display_run = run.run;
+        val = float(stat)
+        if val == 1e300*1e300:
+            return None
+        return val
+
+class StatOutput(object):
+    def __init__(self, name, jobfile, stat=None, info=dbinfo(), binstats=None):
+        self.name = name
+        self.jobfile = jobfile
+        self.stat = stat
+        self.binstats = None
+        self.label = self.name
+        self.invert = False
+        self.info = info
+
+    def printdata(self, bin = None, printmode = 'G'):
+        import info
+
+        if bin:
+            print '%s %s stats' % (self.name, bin)
+
+        if self.binstats:
+            for stat in self.binstats:
+                stat.bins = bin
+
+        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 display(self, binned = False, printmode = 'G'):
+        if binned and self.binstats:
+            self.printdata('kernel', printmode)
+            self.printdata('idle', printmode)
+            self.printdata('user', printmode)
+            self.printdata('interrupt', printmode)
+
+            print '%s total stats' % self.name
+        self.printdata(printmode=printmode)
+
+    def graph(self, graphdir):
+        from os.path import expanduser, join as joinpath
+        from barchart import BarChart
+        from matplotlib.numerix import Float, zeros
+        import re
+
+        confgroups = self.jobfile.groups()
+        ngroups = len(confgroups)
+        skiplist = [ False ] * ngroups
+        groupopts = None
+        baropts = None
+        groups = []
+        for i,group in enumerate(confgroups):
+            if group.flags.graph_group:
+                if groupopts is not None:
+                    raise AttributeError, \
+                          'Two groups selected for graph group'
+                groupopts = group.subopts()
+                skiplist[i] = True
+            elif group.flags.graph_bars:
+                if baropts is not None:
+                    raise AttributeError, \
+                          'Two groups selected for graph bars'
+                baropts = group.subopts()
+                skiplist[i] = True
+            else:
+                groups.append(group)
+
+        if groupopts is None:
+            raise AttributeError, 'No group selected for graph group'
+
+        if baropts is None:
+            raise AttributeError, 'No group selected for graph bars'
+
+        directory = expanduser(graphdir)
+        html = file(joinpath(directory, '%s.html' % self.name), 'w')
+        print >>html, '<html>'
+        print >>html, '<title>Graphs for %s</title>' % self.name
+        print >>html, '<body>'
+
+        for options in self.jobfile.options(groups):
+            data = zeros((len(groupopts), len(baropts)), Float)
+            data = [ [ None ] * len(baropts) for i in xrange(len(groupopts)) ]
+            enabled = False
+            stacked = None
+            for g,gopt in enumerate(groupopts):
+                for b,bopt in enumerate(baropts):
+                    job = self.jobfile.job(options + [ gopt, bopt ])
+
+                    val = self.info.get(job, self.stat)
+                    if val is None:
+                        val = 0.0
+                    curstacked = isinstance(val, (list, tuple))
+                    if stacked is None:
+                        stacked = curstacked
+                    else:
+                        if stacked != curstacked:
+                            raise ValueError, "some stats stacked, some not"
+
+                    data[g][b] = val
+
+            bar_descs = [ opt.desc for opt in baropts ]
+            group_descs = [ opt.desc for opt in groupopts ]
+            if stacked:
+                legend = self.info.rcategories
+            else:
+                legend = bar_descs
+
+            chart = BarChart(data=data, xlabel='Benchmark', ylabel=self.label,
+                             legend=legend, xticks=group_descs)
+            chart.graph()
+
+            names = [ opt.name for opt in options ]
+            descs = [ opt.desc for opt in options ]
+
+            filename =  '%s-%s.png' % (self.name, ':'.join(names))
+            desc = ' '.join(descs)
+            filepath = joinpath(directory, filename)
+            chart.savefig(filepath)
+            filename = re.sub(':', '%3A', filename)
+            print >>html, '''%s<br><img src="%s"><br>''' % (desc, filename)
+
+        print >>html, '</body>'
+        print >>html, '</html>'
+        html.close()
diff --git a/util/stats/profile.py b/util/stats/profile.py
new file mode 100644 (file)
index 0000000..65a03e9
--- /dev/null
@@ -0,0 +1,146 @@
+# 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 orderdict import orderdict
+import output
+
+class ProfileData(object):
+    def __init__(self):
+        self.data = {}
+        self.total = {}
+        self.runs = orderdict()
+        self.runlist = []
+
+    def addvalue(self, run, cpu, symbol, value):
+        value = float(value)
+        self.data[run, cpu, symbol] = self.getvalue(run, cpu, symbol) + value
+        self.total[run, cpu] = self.gettotal(run, cpu) + value
+        if run not in self.runs:
+            self.runs[run] = orderdict()
+
+        if cpu not in self.runs[run]:
+            self.runs[run][cpu] = {}
+
+        if symbol not in self.runs[run][cpu]:
+            self.runs[run][cpu][symbol] = 0
+
+        self.runs[run][cpu][symbol] += value
+
+    def getvalue(self, run, cpu, symbol):
+        return self.data.get((run, cpu, symbol), 0)
+
+    def gettotal(self, run, cpu):
+        return self.total.get((run, cpu), 0)
+
+class Profile(object):
+    default_order = ['ste', 'hte', 'htd', 'ocm', 'occ', 'ocp']
+
+    # This list controls the order of values in stacked bar data output
+    default_categories = [ 'interrupt',
+                           'driver',
+                           'stack',
+                           'bufmgt',
+                           'copy',
+                           'user',
+                           'other',
+                           'idle']
+
+    def __init__(self, run_order=[], categories=[], stacknames=[]):
+        if not run_order:
+            run_order = Profile.default_order
+        if not categories:
+            categories = Profile.default_categories
+
+        self.run_order = run_order
+        self.categories = categories
+        self.rcategories = []
+        self.rcategories.extend(categories)
+        self.rcategories.reverse()
+        self.stacknames = stacknames
+        self.prof = ProfileData()
+        self.categorize = True
+        self.showidle = True
+        self.maxsymlen = 0
+
+    def category(self, symbol):
+        from categories import categories, categories_re
+        if categories.has_key(symbol):
+            return categories[symbol]
+        for regexp, cat in categories_re:
+            if regexp.match(symbol):
+                return cat
+        return 'other'
+
+    # Parse input file and put the results in the given run and cpu
+    def parsefile(self, run, cpu, filename):
+        fd = file(filename)
+
+        for line in fd:
+            (symbol, count) = line.split()
+            if symbol == "0x0":
+                continue
+            count = int(count)
+
+            if self.categorize:
+                symbol = self.category(symbol)
+                if symbol == 'idle' and not self.showidle:
+                    continue
+
+                if symbol not in self.categories:
+                    symbol = 'other'
+
+            self.maxsymlen = max(self.maxsymlen, len(symbol))
+            self.prof.addvalue(run, cpu, symbol, count)
+
+        fd.close()
+
+    # 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'm5prof\.(.*)')
+        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:]
+                self.parsefile(dirname, match.group(1), filename)
+
+    def get(self, job, stat):
+        if job.system is None:
+            raise AttributeError, 'The job must have a system set'
+
+        cpu =  '%s.full0' % job.system
+        values = []
+        for cat in self.categories:
+            values.append(self.prof.getvalue(job.name, cpu, cat))
+        return values
index be9767d6ec91d1d6d29ff761cf24ba77ffc97f2e..c53d77d54beac04833105add601358cbc703e3cb 100755 (executable)
 from __future__ import division
 import re, sys, math
 
-
 def usage():
     print '''\
-Usage: %s [-E] [-F] [-d <db> ] [-g <get> ] [-h <host>] [-p]
+Usage: %s [-E] [-F] [ -G <get> ] [-d <db> ] [-g <graphdir> ] [-h <host>] [-p]
        [-s <system>] [-r <runs> ] [-T <samples>] [-u <username>]
        <command> [command args]
 
@@ -61,143 +60,6 @@ def getopts(list, flags):
 
     return opts, args
 
-def printval(name, value, invert = False):
-    if invert and value != 0.0:
-        value = 1 / value
-
-    if value == (1e300*1e300):
-        return
-
-    if printval.mode == 'G':
-        print '%s:    %g' % (name, value)
-    elif printval.mode != 'F' and value > 1e6:
-        print '%s:    %0.5e' % (name, value)
-    else:
-        print '%s:    %f' % (name, value)
-
-printval.mode = 'G'
-
-def unique(list):
-    set = {}
-    map(set.__setitem__, list, [])
-    return set.keys()
-
-#benchmarks = [ 'm', 's', 'snt', 'nb1', 'w1', 'w2', 'w3', 'w4', 'nm', 'ns', 'nw1', 'nw2', 'nw3' ]
-
-def graphdata(runs, options, tag, label, value):
-    import info
-
-    bench_system = {
-        'm' : 'client',
-        's' : 'client',
-        'snt' : 'client',
-        'nb1' : 'server',
-        'nb2' : 'server',
-        'nt1' : 'server',
-        'nt2' : 'server',
-        'w1' : 'server',
-        'w2' : 'server',
-        'w3' : 'server',
-        'w4' : 'server',
-        'w1s' : 'server',
-        'w2s' : 'server',
-        'w3s' : 'server',
-        'ns' : 'natbox',
-        'nm' : 'natbox',
-        'nw1' : 'natbox',
-        'nw2' : 'natbox',
-        'nw3' : 'natbox'
-        }
-
-    system_configs = {
-        's1' : 'Uni 4GHz',
-        'm1' : 'Uni 6GHz',
-        'f1' : 'Uni 8GHz',
-        'q1' : 'Uni 10GHz',
-        's2' : 'Dual 4GHz',
-        'm2' : 'Dual 6GHz',
-        's4' : 'Quad 4GHz',
-        'm4' : 'Quad 6GHz' }
-
-    configs = ['ste', 'hte', 'htd', 'ocm', 'occ', 'ocp' ]
-    benchmarks = [ 'm', 'snt', 'w2', 'nm', 'nw2' ]
-    caches = [ '0', '2', '4' ]
-
-    names = []
-    for bench in benchmarks:
-        if bench_system[bench] != options.system:
-            continue
-
-        for cache in caches:
-            names.append([bench, cache])
-
-    for bench,cache in names:
-        base = '%s.%s' % (bench, cache)
-        fname = 'data/uni.%s.%s.dat' % (tag, base)
-        f = open(fname, 'w')
-        print >>f, '#set TITLE = '
-        print >>f, '#set ylbl = %s' % label
-        #print >>f, '#set sublabels = %s' % ' '.join(configs)
-        print >>f, '#set sublabels = ste hte htd ocm occ ocs'
-
-        for speed in ('s1', 'm1', 'f1', 'q1'):
-            label = system_configs[speed]
-            print >>f, '"%s"' % label,
-            for conf in configs:
-                name = '%s.%s.%s.%s' % (conf, bench, cache, speed)
-                run = info.source.allRunNames[name]
-                info.display_run = run.run;
-                val = float(value)
-                if val == 1e300*1e300:
-                    print >>f, 0.0,
-                else:
-                    print >>f, "%f" % val,
-            print >>f
-        f.close()
-
-    configs = ['ste', 'hte', 'htd', 'ocm', 'occ', 'ocp' ]
-    benchmarks = [ 'w2']
-    caches = [ '0', '2', '4' ]
-
-    names = []
-    for bench in benchmarks:
-        if bench_system[bench] != options.system:
-            continue
-
-        for cache in caches:
-            names.append([bench, cache])
-
-    for bench,cache in names:
-        base = '%s.%s' % (bench, cache)
-        fname = 'data/mp.%s.%s.dat' % (tag, base)
-        f = open(fname, 'w')
-        print >>f, '#set TITLE = '
-        print >>f, '#set ylbl = %s' % label
-        #print >>f, '#set sublabels = %s' % ' '.join(configs)
-        print >>f, '#set sublabels = ste hte htd ocm occ ocs'
-
-        for speed in ('s2', 'm2', 's4', 'm4'):
-            label = system_configs[speed]
-            print >>f, '"%s"' % label,
-            for conf in configs:
-                name = '%s.%s.%s.%s' % (conf, bench, cache, speed)
-                run = info.source.allRunNames[name]
-                info.display_run = run.run;
-                val = float(value)
-                if val == 1e300*1e300:
-                    print >>f, 0.0,
-                else:
-                    print >>f, "%f" % val,
-            print >>f
-        f.close()
-
-def printdata(runs, value, invert = False):
-    import info
-    for run in runs:
-        info.display_run = run.run;
-        val = float(value)
-        printval(run.name, val)
-
 class CommandException(Exception):
     pass
 
@@ -243,7 +105,7 @@ def commands(options, command, args):
     info.source.passwd = options.passwd
     info.source.user = options.user
     info.source.connect()
-    info.source.update_dict(globals())
+    #info.source.update_dict(globals())
 
     if type(options.get) is str:
         info.source.get = options.get
@@ -270,6 +132,43 @@ def commands(options, command, args):
         info.source.listRuns(user)
         return
 
+    if command == 'stats':
+        if len(args) == 0:
+            info.source.listStats()
+        elif len(args) == 1:
+            info.source.listStats(args[0])
+        else:
+            raise CommandException
+
+        return
+
+    if command == 'bins':
+        if len(args) == 0:
+            info.source.listBins()
+        elif len(args) == 1:
+            info.source.listBins(args[0])
+        else:
+            raise CommandException
+
+        return
+
+    if command == 'formulas':
+        if len(args) == 0:
+            info.source.listFormulas()
+        elif len(args) == 1:
+            info.source.listFormulas(args[0])
+        else:
+            raise CommandException
+
+        return
+
+    if command == 'samples':
+        if len(args):
+            raise CommandException
+
+        info.source.listTicks(runs)
+        return
+
     if command == 'stability':
         if len(args) < 2:
             raise CommandException
@@ -281,16 +180,19 @@ def commands(options, command, args):
         stats = info.source.getStat(args[1])
         info.source.get = "sum"
 
+        def disp(*args):
+            print "%-20s %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
-            print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \
-                  ("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV", "SAMP", "CV")
-            print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \
-                  ("--------------------", "------------",
-                   "------------", "----", "-----", "-----", "-----", "----------")
+            disp("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV",
+                 "SAMP", "CV")
+            disp(d[:20], d[:12], d[:12], d[:4], d[:5], d[:5], d[:5], d[:10])
+
             #loop through all the selected runs
             for run in runs:
                 info.display_run = run.run;
@@ -331,130 +233,63 @@ def commands(options, command, args):
                     if (val < (avg - (2*stdev))) or (val > (avg + (2*stdev))):
                         numoutside2std += 1
                 if avg > 1000:
-                    print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \
-                          (run.name, "%.1f" % avg, "%.1f" % stdev,
-                           "%d" % numoutsideavg, "%d" % numoutside1std,
-                           "%d" % numoutside2std, "%d" % len(pairRunTicks),
-                           "%.3f" % (stdev/avg*100))
+                    disp(run.name, "%.1f" % avg, "%.1f" % stdev,
+                         "%d" % numoutsideavg, "%d" % numoutside1std,
+                         "%d" % numoutside2std, "%d" % len(pairRunTicks),
+                         "%.3f" % (stdev/avg*100))
                 elif avg > 100:
-                    print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \
-                          (run.name, "%.1f" % avg, "%.1f" % stdev,
-                           "%d" % numoutsideavg, "%d" % numoutside1std,
-                           "%d" % numoutside2std, "%d" % len(pairRunTicks),
-                           "%.5f" % (stdev/avg*100))
+                    disp(run.name, "%.1f" % avg, "%.1f" % stdev,
+                         "%d" % numoutsideavg, "%d" % numoutside1std,
+                         "%d" % numoutside2std, "%d" % len(pairRunTicks),
+                         "%.5f" % (stdev/avg*100))
                 else:
-                    print "%-20s %12s %12s %4s %5s %5s %5s %10s" % \
-                          (run.name, "%.5f" % avg, "%.5f" % stdev,
-                           "%d" % numoutsideavg, "%d" % numoutside1std,
-                           "%d" % numoutside2std, "%d" % len(pairRunTicks),
-                           "%.7f" % (stdev/avg*100))
+                    disp(run.name, "%.5f" % avg, "%.5f" % stdev,
+                         "%d" % numoutsideavg, "%d" % numoutside1std,
+                         "%d" % numoutside2std, "%d" % len(pairRunTicks),
+                         "%.7f" % (stdev/avg*100))
         return
 
-    if command == 'stats':
-        if len(args) == 0:
-            info.source.listStats()
-        elif len(args) == 1:
-            info.source.listStats(args[0])
-        else:
-            raise CommandException
-
-        return
-
-    if command == 'stat':
-        if len(args) != 1:
+    if command == 'all':
+        if len(args):
             raise CommandException
 
-        stats = info.source.getStat(args[0])
-        for stat in stats:
-            if options.graph:
-                graphdata(runs, options, stat.name, stat.name, stat)
-            else:
-                if options.ticks:
-                   print 'only displaying sample %s' % options.ticks
-                   info.globalTicks = [ int(x) for x in options.ticks.split() ]
-
-                if options.binned:
-                    print 'kernel ticks'
-                    stat.bins = 'kernel'
-                    printdata(runs, stat)
-
-                    print 'idle ticks'
-                    stat.bins = 'idle'
-                    printdata(runs, stat)
-
-                    print 'user ticks'
-                    stat.bins = 'user'
-                    printdata(runs, stat)
-
-                    print 'interrupt ticks'
-                    stat.bins = 'interrupt'
-                    printdata(runs, stat)
-
-                    print 'total ticks'
-
-                stat.bins = None
-                print stat.name
-                printdata(runs, stat)
-        return
+        all = [ 'bps', 'rxbps', 'txbps', 'bpt',
+                'misses', 'mpkb',
+                'ipkb',
+                'pps', 'bpp', 'txbpp', 'rxbpp',
+                'rtp', 'rtb' ]
+        for command in all:
+            commands(options, command, args)
 
-    if command == 'formula':
-        if len(args) != 1:
-            raise CommandException
+    if options.ticks:
+        if not options.graph:
+            print 'only displaying sample %s' % options.ticks
+        info.globalTicks = [ int(x) for x in options.ticks.split() ]
 
-        stats = eval(args[0])
-        for stat in stats:
-            if options.graph:
-                graphdata(runs, options, stat.name, stat.name, stat)
-            else:
-                if options.binned:
-                    print 'kernel ticks'
-                    stat.bins = 'kernel'
-                    printdata(runs, stat)
-
-                    print 'idle ticks'
-                    stat.bins = 'idle'
-                    printdata(runs, stat)
-
-                    print 'user ticks'
-                    stat.bins = 'user'
-                    printdata(runs, stat)
-
-                    print 'interrupt ticks'
-                    stat.bins = 'interrupt'
-                    printdata(runs, stat)
-
-                    print 'total ticks'
-
-                stat.bins = None
-                print args[0]
-                printdata(runs, stat)
-        return
+    from output import StatOutput
 
-    if command == 'bins':
-        if len(args) == 0:
-            info.source.listBins()
-        elif len(args) == 1:
-            info.source.listBins(args[0])
+    def display():
+        if options.graph:
+            output.graph(options.graphdir)
         else:
-            raise CommandException
+            output.display(options.binned, options.printmode)
 
-        return
 
-    if command == 'formulas':
-        if len(args) == 0:
-            info.source.listFormulas()
-        elif len(args) == 1:
-            info.source.listFormulas(args[0])
-        else:
+    if command == 'stat' or command == 'formula':
+        if len(args) != 1:
             raise CommandException
 
-        return
+        if command == 'stat':
+            stats = info.source.getStat(args[0])
+        if command == 'formula':
+            stats = eval(args[0])
 
-    if command == 'samples':
-        if len(args):
-            raise CommandException
+        for stat in stats:
+            output = StatOutput(stat.name, options.jobfile)
+            output.stat = stat
+            output.label = stat.name
+            display()
 
-        info.source.listTicks(runs)
         return
 
     if len(args):
@@ -462,273 +297,151 @@ def commands(options, command, args):
 
     system = info.source.__dict__[options.system]
 
+    from proxy import ProxyGroup
+    sim_ticks = info.source['sim_ticks']
+    sim_seconds = info.source['sim_seconds']
+    proxy = ProxyGroup(system = info.source[options.system])
+    system = proxy.system
+
+    etherdev = system.tsunami.etherdev0
+    bytes = etherdev.rxBytes + etherdev.txBytes
+    kbytes = bytes / 1024
+    packets = etherdev.rxPackets + etherdev.txPackets
+    bps = etherdev.rxBandwidth + etherdev.txBandwidth
+
+    output = StatOutput(command, options.jobfile)
+
     if command == 'usertime':
         import copy
-        kernel = copy.copy(system.full0.numCycles)
-        kernel.bins = 'kernel'
-
         user = copy.copy(system.full0.numCycles)
         user.bins = 'user'
 
-        if options.graph:
-            graphdata(runs, options, 'usertime', 'User Fraction',
-                      user / system.full0.numCycles)
-        else:
-            printdata(runs, user / system.full0.numCycles)
+        output.stat = user / system.full0.numCycles
+        output.label = 'User Fraction'
+
+        display()
         return
 
     if command == 'ticks':
-        if options.binned:
-            print 'kernel ticks'
-            system.full0.numCycles.bins = 'kernel'
-            printdata(runs, system.full0.numCycles)
+        output.stat = system.full0.numCycles
+        output.binstats = [ system.full0.numCycles ]
 
-            print 'idle ticks'
-            system.full0.numCycles.bins = 'idle'
-            printdata(runs, system.full0.numCycles)
-
-            print 'user ticks'
-            system.full0.numCycles.bins = 'user'
-            printdata(runs, system.full0.numCycles)
-
-            print 'total ticks'
+        display()
+        return
 
-        system.full0.numCycles.bins = None
-        printdata(runs, system.full0.numCycles)
+    if command == 'bytes':
+        output.stat = bytes
+        display()
         return
 
     if command == 'packets':
-        packets = system.tsunami.etherdev0.rxPackets
-        if options.graph:
-            graphdata(runs, options, 'packets', 'Packets', packets)
-        else:
-            printdata(runs, packets)
+        output.stat = packets
+        display()
         return
 
     if command == 'ppt' or command == 'tpp':
-        ppt = system.tsunami.etherdev0.rxPackets / sim_ticks
-        printdata(runs, ppt, command == 'tpp')
+        output.stat = packets / sim_ticks
+        output.invert = command == 'tpp'
+        display()
         return
 
     if command == 'pps':
-        pps = system.tsunami.etherdev0.rxPackets / sim_seconds
-        if options.graph:
-            graphdata(runs, options, 'pps', 'Packets/s', pps)
-        else:
-            printdata(runs, pps)
+        output.stat = packets / sim_seconds
+        output.label = 'Packets/s'
+        display()
         return
 
     if command == 'bpt' or command == 'tpb':
-        bytes = system.tsunami.etherdev0.rxBytes + system.tsunami.etherdev0.txBytes
-        bpt = bytes / sim_ticks * 8
-        if options.graph:
-            graphdata(runs, options, 'bpt', 'bps / Hz', bpt)
-        else:
-            printdata(runs, bpt, command == 'tpb')
+        output.stat = bytes / sim_ticks * 8
+        output.label = 'bps / Hz'
+        output.invert = command == 'tpb'
+        display()
         return
 
-    if command == 'bptb' or command == 'tpbb':
-        bytes = system.tsunami.etherdev0.rxBytes + system.tsunami.etherdev0.txBytes
-
-        print 'kernel stats'
-        bytes.bins = 'kernel'
-        printdata(runs, bytes / ticks)
-
-        print 'idle stats'
-        bytes.bins = 'idle'
-        printdata(runs, bytes / ticks)
-
-        print 'user stats'
-        bytes.bins = 'user'
-        printdata(runs, bytes / ticks)
-
+    if command == 'rxbps':
+        output.stat = etherdev.rxBandwidth / 1e9
+        output.label = 'Bandwidth (Gbps)'
+        display()
         return
 
-    if command == 'bytes':
-        stat = system.tsunami.etherdev0.rxBytes + system.tsunami.etherdev0.txBytes
-
-        if options.binned:
-            print '%s kernel stats' % stat.name
-            stat.bins = 'kernel'
-            printdata(runs, stat)
-
-            print '%s idle stats' % stat.name
-            stat.bins = 'idle'
-            printdata(runs, stat)
-
-            print '%s user stats' % stat.name
-            stat.bins = 'user'
-            printdata(runs, stat)
-
-            print '%s total stats' % stat.name
-            stat.bins = None
-
-        printdata(runs, stat)
+    if command == 'txbps':
+        output.stat = etherdev.txBandwidth / 1e9
+        output.label = 'Bandwidth (Gbps)'
+        display()
         return
 
-    if command == 'rxbps':
-        gbps = system.tsunami.etherdev0.rxBandwidth / 1e9
-        if options.graph:
-            graphdata(runs, options, 'rxbps', 'Bandwidth (Gbps)',  gbps)
-        else:
-            printdata(runs, gbps)
+    if command == 'bps':
+        output.stat = bps / 1e9
+        output.label = 'Bandwidth (Gbps)'
+        display()
         return
 
-    if command == 'txbps':
-        gbps = system.tsunami.etherdev0.txBandwidth / 1e9
-        if options.graph:
-            graphdata(runs, options, 'txbps', 'Bandwidth (Gbps)',  gbps)
-        else:
-            printdata(runs, gbps)
+    if command == 'bpp':
+        output.stat = bytes / packets
+        output.label = 'Bytes / Packet'
+        display()
         return
 
-    if command == 'bps':
-        rxbps = system.tsunami.etherdev0.rxBandwidth
-        txbps = system.tsunami.etherdev0.txBandwidth
-        gbps = (rxbps + txbps) / 1e9
-        if options.graph:
-            graphdata(runs, options, 'bps', 'Bandwidth (Gbps)',  gbps)
-        else:
-            printdata(runs, gbps)
+    if command == 'rxbpp':
+        output.stat = etherdev.rxBytes / etherdev.rxPackets
+        output.label = 'Receive Bytes / Packet'
+        display()
         return
 
-    if command == 'misses':
-        stat = system.l2.overall_mshr_misses
-        if options.binned:
-            print '%s kernel stats' % stat.name
-            stat.bins = 'kernel'
-            printdata(runs, stat)
+    if command == 'txbpp':
+        output.stat = etherdev.txBytes / etherdev.txPackets
+        output.label = 'Transmit Bytes / Packet'
+        display()
+        return
 
-            print '%s idle stats' % stat.name
-            stat.bins = 'idle'
-            printdata(runs, stat)
+    if command == 'rtp':
+        output.stat = etherdev.rxPackets / etherdev.txPackets
+        output.label = 'rxPackets / txPackets'
+        display()
+        return
 
-            print '%s user stats' % stat.name
-            stat.bins = 'user'
-            printdata(runs, stat)
+    if command == 'rtb':
+        output.stat = etherdev.rxBytes / etherdev.txBytes
+        output.label = 'rxBytes / txBytes'
+        display()
+        return
 
-            print '%s total stats' % stat.name
+    misses = system.l2.overall_mshr_misses
 
-        stat.bins = None
-        if options.graph:
-            graphdata(runs, options, 'misses', 'Overall MSHR Misses', stat)
-        else:
-            printdata(runs, stat)
+    if command == 'misses':
+        output.stat = misses
+        output.label = 'Overall MSHR Misses'
+        display()
         return
 
     if command == 'mpkb':
-        misses = system.l2.overall_mshr_misses
-        rxbytes = system.tsunami.etherdev0.rxBytes
-        txbytes = system.tsunami.etherdev0.txBytes
-
-        if options.binned:
-            print 'mpkb kernel stats'
-            misses.bins = 'kernel'
-            mpkb = misses / ((rxbytes + txbytes) / 1024)
-            printdata(runs, mpkb)
-
-            print 'mpkb idle stats'
-            misses.bins = 'idle'
-            mpkb = misses / ((rxbytes + txbytes) / 1024)
-            printdata(runs, mpkb)
-
-            print 'mpkb user stats'
-            misses.bins = 'user'
-            mpkb = misses / ((rxbytes + txbytes) / 1024)
-            printdata(runs, mpkb)
-
-            print 'mpkb total stats'
-
-        mpkb = misses / ((rxbytes + txbytes) / 1024)
-        misses.bins = None
-        if options.graph:
-            graphdata(runs, options, 'mpkb', 'Misses / KB',  mpkb)
-        else:
-            printdata(runs, mpkb)
+        output.stat = misses / (bytes / 1024)
+        output.binstats = [ misses ]
+        output.label = 'Misses / KB'
+        display()
         return
 
     if command == 'ipkb':
         interrupts = system.full0.kern.faults[4]
-        rxbytes = system.tsunami.etherdev0.rxBytes
-        txbytes = system.tsunami.etherdev0.txBytes
-
-        if options.binned:
-            print 'ipkb kernel stats'
-            interrupts.bins = 'kernel'
-            ipkb = interrupts / ((rxbytes + txbytes) / 1024)
-            printdata(runs, ipkb)
-
-            print 'ipkb idle stats'
-            interrupts.bins = 'idle'
-            ipkb = interrupts / ((rxbytes + txbytes) / 1024)
-            printdata(runs, ipkb)
-
-            print 'ipkb user stats'
-            interrupts.bins = 'user'
-            ipkb = interrupts / ((rxbytes + txbytes) / 1024)
-            printdata(runs, ipkb)
-
-            print 'ipkb total stats'
-
-        ipkb = interrupts / ((rxbytes + txbytes) / 1024)
-        interrupts.bins = None
-        if options.graph:
-            graphdata(runs, options, 'ipkb', 'Interrupts / KB',  ipkb)
-        else:
-            printdata(runs, ipkb)
+        output.stat = interrupts / kbytes
+        output.binstats = [ interrupts ]
+        output.label = 'Interrupts / KB'
+        display()
         return
 
     if command == 'execute':
-        printdata(runs, system.full0.ISSUE__count)
+        output.stat = system.full0.ISSUE__count
+        display()
         return
 
     if command == 'commit':
-        printdata(runs, system.full0.COM__count)
+        output.stat = system.full0.COM__count
+        display()
         return
 
     if command == 'fetch':
-        printdata(runs, system.full0.FETCH__count)
-        return
-
-    if command == 'bpp':
-        ed = system.tsunami.etherdev0
-        bpp = (ed.rxBytes + ed.txBytes) / (ed.rxPackets + ed.txPackets)
-        if options.graph:
-            graphdata(runs, options, 'bpp', 'Bytes / Packet',  bpp)
-        else:
-            printdata(runs, bpp)
-        return
-
-    if command == 'rxbpp':
-        bpp = system.tsunami.etherdev0.rxBytes / system.tsunami.etherdev0.rxPackets
-        if options.graph:
-            graphdata(runs, options, 'rxbpp', 'Receive Bytes / Packet',  bpp)
-        else:
-            printdata(runs, bpp)
-        return
-
-    if command == 'txbpp':
-        bpp = system.tsunami.etherdev0.txBytes / system.tsunami.etherdev0.txPackets
-        if options.graph:
-            graphdata(runs, options, 'txbpp', 'Transmit Bytes / Packet',  bpp)
-        else:
-            printdata(runs, bpp)
-        return
-
-    if command == 'rtp':
-        rtp = system.tsunami.etherdev0.rxPackets / system.tsunami.etherdev0.txPackets
-        if options.graph:
-            graphdata(runs, options, 'rtp', 'rxPackets / txPackets',  rtp)
-        else:
-            printdata(runs, rtp)
-        return
-
-    if command == 'rtb':
-        rtb = system.tsunami.etherdev0.rxBytes / system.tsunami.etherdev0.txBytes
-        if options.graph:
-            graphdata(runs, options, 'rtb', 'rxBytes / txBytes',  rtb)
-        else:
-            printdata(runs, rtb)
+        output.stat = system.full0.FETCH__count
+        display()
         return
 
     raise CommandException
@@ -738,9 +451,10 @@ class Options: pass
 
 if __name__ == '__main__':
     import getpass
+    from jobfile import JobFile
 
     options = Options()
-    options.host = 'zizzer.pool'
+    options.host = None
     options.db = None
     options.passwd = ''
     options.user = getpass.getuser()
@@ -750,23 +464,31 @@ if __name__ == '__main__':
     options.binned = False
     options.graph = False
     options.ticks = False
+    options.printmode = 'G'
+    options.jobfile = None
+    options.all = False
 
-    opts, args = getopts(sys.argv[1:], '-6BEFGd:g:h:pr:s:u:T:')
+    opts, args = getopts(sys.argv[1:], '-BEFG:ad:g:h:j:pr:s:u:T:')
     for o,a in opts:
         if o == '-B':
             options.binned = True
         if o == '-E':
-            printval.mode = 'E'
+            options.printmode = 'E'
         if o == '-F':
-            printval.mode = 'F'
+            options.printmode = 'F'
         if o == '-G':
-            options.graph = True;
+            options.get = a
+        if o == '-a':
+            options.all = True
         if o == '-d':
             options.db = a
         if o == '-g':
-            options.get = a
+            options.graph = True;
+            options.graphdir = a
         if o == '-h':
             options.host = a
+        if o == '-j':
+            options.jobfile = JobFile(a)
         if o == '-p':
             options.passwd = getpass.getpass()
         if o == '-r':
@@ -778,6 +500,18 @@ if __name__ == '__main__':
         if o == '-T':
             options.ticks = a
 
+    if options.jobfile:
+        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()