summaryrefslogtreecommitdiff
path: root/apps/debug_menu.c
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-07-15 22:25:45 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-07-15 22:25:45 +0000
commit7fef58a87ac9efba80321398c5088c317d055481 (patch)
treec1655d29f890dda6ac4bcfab7f602885b6a99fff /apps/debug_menu.c
parent09153dd82a371283f96b9be490c8c9a5d44a97c7 (diff)
downloadrockbox-7fef58a87ac9efba80321398c5088c317d055481.zip
rockbox-7fef58a87ac9efba80321398c5088c317d055481.tar.gz
rockbox-7fef58a87ac9efba80321398c5088c317d055481.tar.bz2
rockbox-7fef58a87ac9efba80321398c5088c317d055481.tar.xz
Added OS debug menu
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1359 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/debug_menu.c')
-rw-r--r--apps/debug_menu.c82
1 files changed, 81 insertions, 1 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 44c5c8e..59428f6 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -32,12 +32,91 @@
#include "power.h"
#include "rtc.h"
#include "debug.h"
+#include "thread.h"
/*---------------------------------------------------*/
/* SPECIAL DEBUG STUFF */
/*---------------------------------------------------*/
extern int ata_device;
extern int ata_io_address;
+extern int num_threads;
+extern char *thread_name[];
+
+#ifdef ARCHOS_RECORDER
+/* Test code!!! */
+void dbg_os(void)
+{
+ char buf[32];
+ int button;
+ int i;
+ int usage;
+
+ lcd_clear_display();
+
+ while(1)
+ {
+ lcd_puts(0, 0, "Stack usage:");
+ for(i = 0; i < num_threads;i++)
+ {
+ usage = thread_stack_usage(i);
+ snprintf(buf, 32, "%s: %d%%", thread_name[i], usage);
+ lcd_puts(0, 1+i, buf);
+ }
+
+ lcd_update();
+ sleep(HZ/10);
+
+ button = button_get(false);
+
+ switch(button)
+ {
+ case BUTTON_OFF:
+ return;
+ }
+ }
+}
+#else
+void dbg_os(void)
+{
+ char buf[32];
+ int button;
+ int usage;
+ int currval = 0;
+
+ lcd_clear_display();
+
+ while(1)
+ {
+ lcd_puts(0, 0, "Stack usage");
+
+ usage = thread_stack_usage(currval);
+ snprintf(buf, 32, "%d: %d%% ", currval, usage);
+ lcd_puts(0, 1, buf);
+
+ sleep(HZ/10);
+
+ button = button_get(false);
+
+ switch(button)
+ {
+ case BUTTON_STOP:
+ return;
+
+ case BUTTON_LEFT:
+ currval--;
+ if(currval < 0)
+ currval = num_threads-1;
+ break;
+
+ case BUTTON_RIGHT:
+ currval++;
+ if(currval > num_threads-1)
+ currval = 0;
+ break;
+ }
+ }
+}
+#endif
#ifdef ARCHOS_RECORDER
/* Test code!!! */
@@ -267,12 +346,13 @@ void debug_menu(void)
int m;
struct menu_items items[] = {
-#ifdef HAVE_LCD_BITMAP
{ "Debug ports", dbg_ports },
+#ifdef HAVE_LCD_BITMAP
#ifdef HAVE_RTC
{ "Debug RTC", dbg_rtc },
#endif /* HAVE_RTC */
#endif /* HAVE_LCD_BITMAP */
+ { "Debug OS", dbg_os },
};
m=menu_init( items, sizeof items / sizeof(struct menu_items) );