diff options
author | Soeren Sandmann <sandmann@redhat.com> | 2005-04-30 20:59:01 +0000 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2005-04-30 20:59:01 +0000 |
commit | 69068047845a57bb1630e79a5ff0adfc86daa0a2 (patch) | |
tree | b5b59ea8e0cc9a293083d0004e32bd4ace048a17 | |
parent | 914d8bf6681c0083f8fb102d5cbbc3f82f9ea433 (diff) |
Use getpagesize()
Sat Apr 30 16:57:23 2005 Soeren Sandmann <sandmann@redhat.com>
* process.c (PAGE_SIZE): Use getpagesize()
* TODO: More updates
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | TODO | 56 | ||||
-rw-r--r-- | process.c | 4 | ||||
-rw-r--r-- | sfile.c | 2 | ||||
-rw-r--r-- | sysprof.c | 6 |
5 files changed, 63 insertions, 11 deletions
@@ -1,3 +1,9 @@ +Sat Apr 30 16:57:23 2005 Soeren Sandmann <sandmann@redhat.com> + + * process.c (PAGE_SIZE): Use getpagesize() + + * TODO: More updates + Sat Apr 30 15:44:12 2005 Søren Sandmann <sandmann@redhat.com> * TODO: Updates @@ -27,13 +27,62 @@ 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 -Before 1.2: + 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 @@ -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: @@ -24,12 +24,12 @@ #include <stdlib.h> #include <sys/stat.h> #include <errno.h> +#include <unistd.h> #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; @@ -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); @@ -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), |