diff --git a/ChangeLog b/ChangeLog index 347b4720..77cf303b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Apr 30 16:57:23 2005 Soeren Sandmann + + * process.c (PAGE_SIZE): Use getpagesize() + + * TODO: More updates + Sat Apr 30 15:44:12 2005 Søren Sandmann * TODO: Updates diff --git a/TODO b/TODO index 6fdeade8..21b93013 100644 --- a/TODO +++ b/TODO @@ -27,14 +27,63 @@ Before 1.0: (ask for sucess/failure-stories in 0.9.x releases) - auto*? - .desktop file - - translation should be hooked up - - - - Before 1.2: +- translation should be hooked up +- Fixing the oops in kernels < 2.6.11 + + - Make the process waiting in poll() responsible for extracting + the backtrace. Give a copy of the entire stack rather than doing + the walk inside the kernel. That would allow us to do more complex + algorithms in userspace. + + New model: + - Two arrays, + one of actual scanned stacks + one of tasks that need to be scanned + One wait queue, + wait for data + + - in read() wait for stack data: + scan_tasks() + if (!stack_data) + return -EWOULDBLOCK; + + in poll() + while (!stack data) { + wait_for_data(); + scan_tasks(); + } + return READABLE; + + scan_tasks() is a function that converts waiting + tasks into data, and wakes them up. + + - in timer interrupt: + + if (someone waiting in poll() && + current && current != that_someone && + current is runnable) + { + stop current; + add current to queue; + wake wait_for_data; + } + + This way, we will have a real userspace process + that can take the page faults. + +- Find out how gdb does backtraces; they may have a better way. Also + find out what dwarf2 is and how to use it. Look into libunwind. + It seems gdb is capable of doing backtraces of code that neither has + a framepointer nor has debug info. It appears gdb uses the contents + of the ".eh_frame" section. There is also an ".eh_frame_hdr" section. + +http://www.linuxbase.org/spec/booksets/LSB-Embedded/LSB-Embedded/ehframe.html + + look in dwarf2-frame.[ch] in the gdb distribution. + - Make busy cursors more intelligent - when you click something in the main list and we don't respond within 50ms (or perhaps when we expect to not be able to do @@ -106,9 +155,6 @@ Before 1.2: - possibly add dependency on glib 2.8 if it is released at that point. (g_file_replace()) -- Find out how gdb does backtraces; they may have a better way. Also - find out what dwarf2 is and how to use it. - Later: diff --git a/process.c b/process.c index 50fd3bf3..699eb6b1 100644 --- a/process.c +++ b/process.c @@ -24,12 +24,12 @@ #include #include #include +#include #include "process.h" #include "binfile.h" -/* FIXME: this should be done with getpagesize() */ -#define PAGE_SIZE 4096 +#define PAGE_SIZE (getpagesize()) static GHashTable *processes_by_cmdline; static GHashTable *processes_by_pid; diff --git a/sfile.c b/sfile.c index 62e7ac26..076c7974 100644 --- a/sfile.c +++ b/sfile.c @@ -862,7 +862,7 @@ handle_begin_element (GMarkupParseContext *parse_context, return; } - /* FIXME: is there really a reason to add begin/end instructions for values? */ + /* FIXME - not10: is there really a reason to add begin/end instructions for values? */ instruction.name = g_strdup (element_name); instruction.kind = BEGIN; g_array_append_val (build->instructions, instruction); diff --git a/sysprof.c b/sysprof.c index c286ec3f..635d1f8c 100644 --- a/sysprof.c +++ b/sysprof.c @@ -33,7 +33,7 @@ #include "profile.h" #include "treeviewutils.h" -/* FIXME */ +/* FIXME - not10 */ #define _(a) a #define APPLICATION_NAME "System Profiler" @@ -83,7 +83,7 @@ struct Application int timeout_id; int generating_profile; - gboolean profile_from_file; /* FIXME: This is a kludge. Figure out how + gboolean profile_from_file; /* FIXME - not10: This is a kludge. Figure out how * to maintain the application model properly * * The fundamental issue is that the state of @@ -199,7 +199,7 @@ update_sensitivity (Application *app) sensitive_start_button); #if 0 - /* FIXME: gtk+ doesn't handle changes in sensitivity in response + /* FIXME - not10: gtk+ doesn't handle changes in sensitivity in response * to a click on the same button very well */ gtk_widget_set_sensitive (GTK_WIDGET (app->reset_button),