Update TODO

This commit is contained in:
Søren Sandmann Pedersen
2005-09-29 02:16:31 +00:00
parent 0c0e514def
commit 1b21157a12
2 changed files with 25 additions and 11 deletions

32
TODO
View File

@ -70,17 +70,15 @@ Before 1.2:
* If interrupt happens in kernel mode, send both * If interrupt happens in kernel mode, send both
kernel stack and user space stack, have userspace stitch them kernel stack and user space stack, have userspace stitch them
together. (User space stack must probably be done in a thread - kernel together. well, they could be stitched together in the kernel.
stack must probably be taken in the interrupt itself? Already done: we now take a stacktrace of the user space process
- Why this difference? The page tables should still be loaded. Is it when the interrupt happens in kernel mode. We don't take any
because pages_present() doesn't work? No, turning it off doesn't help. stacktraces of the kernel though. Things that need to be investigated:
- It looks like this works. Get: - does the kernel come with dwarf debug information?
- does the kernel come with some other debug info
struct pt_regs *user_regs = - is there a place where the vmlinux binary is usually
(void *)current->thread.esp0 - sizeof (struct pt_regs); placed? (We should avoid any "location of vmlinux" type
questions if at all possible).
then use pages_present as usual to trace with user_regs; There could be
rare lockups though.
* Correctness * Correctness
- When the module is unloaded, kill all processes blocking in read - When the module is unloaded, kill all processes blocking in read
@ -450,6 +448,18 @@ Later:
DONE: DONE:
* (User space stack must probably be done in a thread - kernel
stack must probably be taken in the interrupt itself?
- Why this difference? The page tables should still be loaded. Is it
because pages_present() doesn't work? No, turning it off doesn't help.
- It looks like this works. Get:
struct pt_regs *user_regs =
(void *)current->thread.esp0 - sizeof (struct pt_regs);
then use pages_present as usual to trace with user_regs; There could be
rare lockups though.
* Non-GUI version that can save in a format the GUI can understand. * Non-GUI version that can save in a format the GUI can understand.
Could be used for profiling startup etc. Would preferably be able to Could be used for profiling startup etc. Would preferably be able to
dump the data to a network socket. Should be able to react to eg. dump the data to a network socket. Should be able to react to eg.

View File

@ -54,6 +54,10 @@ lookup_signal_watch (int signo)
return NULL; return NULL;
} }
/* These two functions might be interrupted by a signal handler that is
* going to run lookup_signal_watch(). Assuming that pointer writes are
* atomic, the code below should be ok.
*/
static void static void
add_signal_watch (SignalWatch *watch) add_signal_watch (SignalWatch *watch)
{ {