diff options
author | William Wilgus <wilgus.william@gmail.com> | 2021-09-28 23:42:33 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2021-09-30 21:13:22 -0400 |
commit | 95b10ac74e7a996b9b1ce7ce88c205e39b67502b (patch) | |
tree | 111391688167f6dd7abd46610bc05e4e5bc8a6de /firmware | |
parent | 5883cb4a5254048d59a2d600b5f63b8d1c06d306 (diff) | |
download | rockbox-95b10ac74e7a996b9b1ce7ce88c205e39b67502b.tar.gz rockbox-95b10ac74e7a996b9b1ce7ce88c205e39b67502b.zip |
Add ability to dump cpu boost log to disk, include thread names
0.) B 0 /rockbox/apps/main.c:405
1.) B 1 /rockbox/firmware/kernel/thread.c thread[dircache]:1508
2.) B 2 /rockbox/apps/tagcache.c:4772
3.) U 3 /rockbox/apps/tagcache.c:4793
add logic to show count after log rolls over
clean-up
Change-Id: Ibda0a56e5d8d89aa8b7649f4f9fa64eb1ff0e08f
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/kernel/thread.c | 7 | ||||
-rw-r--r-- | firmware/system.c | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/firmware/kernel/thread.c b/firmware/kernel/thread.c index 307be7116a..a422624df7 100644 --- a/firmware/kernel/thread.c +++ b/firmware/kernel/thread.c | |||
@@ -1501,7 +1501,14 @@ static inline void boost_thread(struct thread_entry *thread, bool boost) | |||
1501 | if ((thread->cpu_boost != 0) != boost) | 1501 | if ((thread->cpu_boost != 0) != boost) |
1502 | { | 1502 | { |
1503 | thread->cpu_boost = boost; | 1503 | thread->cpu_boost = boost; |
1504 | #ifdef CPU_BOOST_LOGGING | ||
1505 | const char fmt[] = __FILE__" thread[%s]"; | ||
1506 | char pathbuf[sizeof(fmt) + 32]; /* thread name 32 */ | ||
1507 | snprintf(pathbuf, sizeof(pathbuf), fmt, thread->name); | ||
1508 | cpu_boost_(boost, pathbuf, __LINE__); | ||
1509 | #else | ||
1504 | cpu_boost(boost); | 1510 | cpu_boost(boost); |
1511 | #endif | ||
1505 | } | 1512 | } |
1506 | } | 1513 | } |
1507 | 1514 | ||
diff --git a/firmware/system.c b/firmware/system.c index 537e901b05..e2fdff0e59 100644 --- a/firmware/system.c +++ b/firmware/system.c | |||
@@ -89,6 +89,7 @@ char * cpu_boost_log_getlog_next(void) | |||
89 | 89 | ||
90 | void cpu_boost_(bool on_off, char* location, int line) | 90 | void cpu_boost_(bool on_off, char* location, int line) |
91 | { | 91 | { |
92 | int item = cpu_boost_calls_count; | ||
92 | if (!cpu_boost_lock()) | 93 | if (!cpu_boost_lock()) |
93 | return; | 94 | return; |
94 | 95 | ||
@@ -98,12 +99,13 @@ void cpu_boost_(bool on_off, char* location, int line) | |||
98 | cpu_boost_calls_count--; | 99 | cpu_boost_calls_count--; |
99 | if (cpu_boost_calls_count < 0) | 100 | if (cpu_boost_calls_count < 0) |
100 | cpu_boost_calls_count = 0; | 101 | cpu_boost_calls_count = 0; |
102 | item += cpu_boost_first; | ||
101 | } | 103 | } |
102 | if (cpu_boost_calls_count < MAX_BOOST_LOG) | 104 | if (cpu_boost_calls_count < MAX_BOOST_LOG) |
103 | { | 105 | { |
104 | int message = (cpu_boost_first+cpu_boost_calls_count)%MAX_BOOST_LOG; | 106 | int message = (cpu_boost_first+cpu_boost_calls_count)%MAX_BOOST_LOG; |
105 | snprintf(cpu_boost_calls[message], MAX_PATH, | 107 | snprintf(cpu_boost_calls[message], MAX_PATH,"%d.) %c %d %s:%d", |
106 | "%c %s:%d",on_off?'B':'U',location,line); | 108 | item,on_off?'B':'U',boost_counter,location,line); |
107 | cpu_boost_calls_count++; | 109 | cpu_boost_calls_count++; |
108 | } | 110 | } |
109 | #else | 111 | #else |