summaryrefslogtreecommitdiff
path: root/apps/debug_menu.c
diff options
context:
space:
mode:
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 44c5c8e181..59428f62dc 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -32,12 +32,91 @@
32#include "power.h" 32#include "power.h"
33#include "rtc.h" 33#include "rtc.h"
34#include "debug.h" 34#include "debug.h"
35#include "thread.h"
35 36
36/*---------------------------------------------------*/ 37/*---------------------------------------------------*/
37/* SPECIAL DEBUG STUFF */ 38/* SPECIAL DEBUG STUFF */
38/*---------------------------------------------------*/ 39/*---------------------------------------------------*/
39extern int ata_device; 40extern int ata_device;
40extern int ata_io_address; 41extern int ata_io_address;
42extern int num_threads;
43extern char *thread_name[];
44
45#ifdef ARCHOS_RECORDER
46/* Test code!!! */
47void dbg_os(void)
48{
49 char buf[32];
50 int button;
51 int i;
52 int usage;
53
54 lcd_clear_display();
55
56 while(1)
57 {
58 lcd_puts(0, 0, "Stack usage:");
59 for(i = 0; i < num_threads;i++)
60 {
61 usage = thread_stack_usage(i);
62 snprintf(buf, 32, "%s: %d%%", thread_name[i], usage);
63 lcd_puts(0, 1+i, buf);
64 }
65
66 lcd_update();
67 sleep(HZ/10);
68
69 button = button_get(false);
70
71 switch(button)
72 {
73 case BUTTON_OFF:
74 return;
75 }
76 }
77}
78#else
79void dbg_os(void)
80{
81 char buf[32];
82 int button;
83 int usage;
84 int currval = 0;
85
86 lcd_clear_display();
87
88 while(1)
89 {
90 lcd_puts(0, 0, "Stack usage");
91
92 usage = thread_stack_usage(currval);
93 snprintf(buf, 32, "%d: %d%% ", currval, usage);
94 lcd_puts(0, 1, buf);
95
96 sleep(HZ/10);
97
98 button = button_get(false);
99
100 switch(button)
101 {
102 case BUTTON_STOP:
103 return;
104
105 case BUTTON_LEFT:
106 currval--;
107 if(currval < 0)
108 currval = num_threads-1;
109 break;
110
111 case BUTTON_RIGHT:
112 currval++;
113 if(currval > num_threads-1)
114 currval = 0;
115 break;
116 }
117 }
118}
119#endif
41 120
42#ifdef ARCHOS_RECORDER 121#ifdef ARCHOS_RECORDER
43/* Test code!!! */ 122/* Test code!!! */
@@ -267,12 +346,13 @@ void debug_menu(void)
267 int m; 346 int m;
268 347
269 struct menu_items items[] = { 348 struct menu_items items[] = {
270#ifdef HAVE_LCD_BITMAP
271 { "Debug ports", dbg_ports }, 349 { "Debug ports", dbg_ports },
350#ifdef HAVE_LCD_BITMAP
272#ifdef HAVE_RTC 351#ifdef HAVE_RTC
273 { "Debug RTC", dbg_rtc }, 352 { "Debug RTC", dbg_rtc },
274#endif /* HAVE_RTC */ 353#endif /* HAVE_RTC */
275#endif /* HAVE_LCD_BITMAP */ 354#endif /* HAVE_LCD_BITMAP */
355 { "Debug OS", dbg_os },
276 }; 356 };
277 357
278 m=menu_init( items, sizeof items / sizeof(struct menu_items) ); 358 m=menu_init( items, sizeof items / sizeof(struct menu_items) );