There is a bug in the kernel where it includes the stack of the IRQ
that generated the event, so that the stack ends up looking like this:
[ip] [irq stack] [real stack].
As a temporary workaround, this patch filters out the irq stack
symbols.
2008-02-17 Soren Sandmann <sandmann@redhat.com>
* collector.c (lookup_symbol): Add commented out code to reject
callback.
* elfparser.c (struct ElfParser): Store the filename if any
(elf_parser_get_sym_address): Subtract the load address, so the
result will be an offset into the text section.
* process.[ch] (process_lookup_symbol): Add an offset out-argument
* binfile.[ch] (bin_symbol_get_address): New function
* TODO: updates
svn path=/trunk/; revision=397
2007-11-16 Soren Sandmann <sandmann@daimi.au.dk>
* TODO: updates
* module/sysprof-module.c (sysprof_poll): Only select readable
when there is at least eight traces available
* collector.c (collect_traces): New function, old on_read()
* collector.c (collector_create_profile): Collect traces here as
well.
svn path=/trunk/; revision=388
2007-10-22 Soren Sandmann <sandmann@daimi.au.dk>
* process.c (look_for_vmlinux): Use an array instead of a
list. Look for vmlinux in the source directory.
* elfparser.c (elf_parser_get_crc32): Only use MADV_DONTNEED if
the data is file-backed.
* TODO: updates.
Various formatting fixes
svn path=/trunk/; revision=385
2007-10-20 Soren Sandmann <sandmann@daimi.au.dk>
* collector.c (on_read): Call callback with an extra boolean
indicating whether the sample read was the first one
* collector.c (add_trace_to_stash): Allocate addresses on the
stack if possible.
* sysprof.c (on_new_sample): Only call update_sensitivity() on the
first sample.
* stackstash.c (stack_stash_add_trace): Move match to front
svn path=/trunk/; revision=373
2007-09-16 Soren Sandmann <sandmann@daimi.au.dk>
* process.c (process_lookup_kernel_symbol): Add support for
looking up kernel symbols from /proc/kallsyms
* sysprof-text.c (dump_data): Print note that the file is being
saved.
* module/sysprof-module.[ch] (timer_notify): Send a copy of the
kernel stack to userspace.
* collector.c: Do kernel symbol lookups.
svn path=/trunk/; revision=372
2007-08-26 Soren Sandmann <sandmann@daimi.au.dk>
* profile.c (profile_get_size): Compute the size by simply summing
the size of the siblings. They are toplevel by definition, and
this works if the siblings for some reason has the same address.
svn path=/trunk/; revision=371
2006-11-22 Soren Sandmann <sandmann@daimi.au.dk>
* profile.c (add_trace_to_tree): Move match to front
(add_trace_to_tree): Break as soon as a recursive call is found.
* stackstash.c (do_callback): Manual tail call optimization.
2006-11-02 Soren Sandmann <sandmann@daimi.au.dk>
Valgrind:
* binparser.c (bin_parser_free): Add this function
* elfparser.c (elf_parser_free): Call bin_parser_free()
* sysprof.c (compute_text_width, add_text): Plug leaks
* collector.c (add_trace_to_stash): Copy n_addresses to a stack
variable instead of reading it out of the mmap'ed area all the
time. (That way if there is an overrun, we won't write too much
into the address array).
2006-10-22 Soren Sandmann <sandmann@daimi.au.dk>
Communicate traces to userspace through shared memory instead of
copying.
* module/sysprof-module.c: Store the traces in a SysprofMmapArea.
(sysprof_mmap): Implement this method.
(sysprof_nopage): Implement this.
(sysprof_read): Just reset the tail pointer and return zero.
* module/sysprof-module.h (struct SysprofMmapArea): New
structure.
* collector.c (collector_stop): Unmap the device
(in_dead_period): New function
(on_read): Read the traces out of mmap()ed area instead of reading
them. Call read() to prevent poll() from firing.
(struct Collector): New members map_area and current.
* Makefile.am (insert-module): Prefix modprobe with /sbin
* collector.c (open_fd): mmap() the sysprof device.