summaryrefslogtreecommitdiff
path: root/core/minute-ia/task.c
diff options
context:
space:
mode:
authorJack Rosenthal <jrosenth@chromium.org>2019-06-14 10:39:22 -0600
committerCommit Bot <commit-bot@chromium.org>2019-06-14 22:05:58 +0000
commitf5838f96e4baf263891752fef86c9bf9d03a2907 (patch)
tree54c48a6779faae9ee267e2855a1a90fcfbbb3c7b /core/minute-ia/task.c
parent0ad3ac0876bdda14129d9a8aa104e11ff1e248aa (diff)
downloadchrome-ec-f5838f96e4baf263891752fef86c9bf9d03a2907.tar.gz
minute-ia: show EC task information during panic
In order to receive better debug info from panic reports, include the current task when the panic was encountered. BUG=b:134071217 BRANCH=none TEST=saw that task was "CONSOLE" when typing "crash divzero" from console Change-Id: I2fa9f931eea0274a762f812b6a7a8281cb8fcc5f Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1660018 Reviewed-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Yuval Peress <peress@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'core/minute-ia/task.c')
-rw-r--r--core/minute-ia/task.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/core/minute-ia/task.c b/core/minute-ia/task.c
index 18c23f5515..fe00340994 100644
--- a/core/minute-ia/task.c
+++ b/core/minute-ia/task.c
@@ -90,7 +90,7 @@ static void task_exit_trap(void)
{
int i = task_get_current();
- cprints(CC_TASK, "Task %d (%s) exited!", i, task_names[i]);
+ cprints(CC_TASK, "Task %d (%s) exited!", i, task_get_name(i));
/* Exited tasks simply sleep forever */
while (1)
task_wait_event(-1);
@@ -187,6 +187,14 @@ task_id_t task_get_current(void)
return current_task - tasks;
}
+const char *task_get_name(task_id_t tskid)
+{
+ if (tskid < ARRAY_SIZE(task_names))
+ return task_names[tskid];
+
+ return "<< unknown >>";
+}
+
uint32_t *task_get_event_bitmap(task_id_t tskid)
{
task_ *tsk = __task_id_to_ptr(tskid);
@@ -211,7 +219,7 @@ uint32_t switch_handler(int desched, task_id_t resched)
#ifdef CONFIG_DEBUG_STACK_OVERFLOW
if (*current->stack != STACK_UNUSED_VALUE) {
panic_printf("\n\nStack overflow in %s task!\n",
- task_names[current - tasks]);
+ task_get_name(current - tasks));
#ifdef CONFIG_SOFTWARE_PANIC
software_panic(PANIC_SW_STACK_OVERFLOW, current - tasks);
#endif
@@ -512,11 +520,11 @@ void task_print_list(void)
#ifdef CONFIG_FPU
ccprintf("%4d %c %-16s %08x %11.6ld %3d/%3d %c\n", i, is_ready,
- task_names[i], tasks[i].events, tasks[i].runtime,
+ task_get_name(i), tasks[i].events, tasks[i].runtime,
stackused, tasks_init[i].stack_size, use_fpu);
#else
ccprintf("%4d %c %-16s %08x %11.6ld %3d/%3d\n", i, is_ready,
- task_names[i], tasks[i].events, tasks[i].runtime,
+ task_get_name(i), tasks[i].events, tasks[i].runtime,
stackused, tasks_init[i].stack_size);
#endif