Add support for looking up kernel symbols from /proc/kallsyms

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
This commit is contained in:
Soren Sandmann
2007-09-17 01:43:07 +00:00
committed by Søren Sandmann Pedersen
parent 39cb26654a
commit f1cbdbf27c
9 changed files with 354 additions and 111 deletions

46
TODO
View File

@ -23,6 +23,15 @@ Before 1.0.4:
Before 1.2:
* Performance:
Switching between descendant views is a slow:
- gtk_tree_store_get_path() is O(n^2) and accounts
for 43% of the time.
- GObject signal emission overhead accounts for 18% of
the time.
Consider adding a forked version of GtkTreeStore with
performance fixes.
* Make sure that labels look decent in case of "No Map" etc.
* Elf bugs:
@ -64,12 +73,27 @@ Before 1.2:
Unless of course, we store the entire stack in
the stackstash. This may use way too much memory though.
- vdso
- assume its the same across processes, just look at
sysprof's own copy.
Done: vdso is done now
- send copy of it to userspace once, or for every
sample.
- Locking, possibly useful code:
/* In principle we should use get_task_mm() but
* that will use task_lock() leading to deadlock
* if somebody already has the lock
*/
if (spin_is_locked (&current->alloc_lock))
printk ("alreadylocked\n");
{
struct mm_struct *mm = current->mm;
if (mm)
{
printk (KERN_ALERT "stack size: %d (%d)\n",
mm->start_stack - regs->REG_STACK_PTR,
current->pid);
stacksize = mm->start_stack - regs->REG_STACK_PTR;
}
else
stacksize = 1;
}
- regular elf
- usually have eh_frame section which is mapped into memory
@ -713,7 +737,15 @@ Later:
of outstanding disk requests.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ALREADY DONE -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ALREADY DONE: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* vdso
- assume its the same across processes, just look at
sysprof's own copy.
Done: vdso is done now
- send copy of it to userspace once, or for every
sample.
* Various:
- decorate_node should be done lazily