From f8ae44876758c658975985df49cca6c645e21eed Mon Sep 17 00:00:00 2001 From: Sachin Parekh Date: Mon, 18 Jan 2021 21:28:36 +0530 Subject: [PATCH 1/2] esp_pm: Label each column of lock dump --- components/esp_pm/pm_impl.c | 6 ++++-- components/esp_pm/pm_locks.c | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/components/esp_pm/pm_impl.c b/components/esp_pm/pm_impl.c index 9f5a98b4e3..2f84fde3b2 100644 --- a/components/esp_pm/pm_impl.c +++ b/components/esp_pm/pm_impl.c @@ -674,15 +674,17 @@ void esp_pm_impl_dump_stats(FILE* out) time_in_mode[cur_mode] += now - last_mode_change_time; - fprintf(out, "Mode stats:\n"); + fprintf(out, "\nMode stats:\n"); + fprintf(out, "%-8s %-10s %-10s %-10s\n", "Mode", "CPU_freq", "Time(us)", "Time(%)"); for (int i = 0; i < PM_MODE_COUNT; ++i) { if (i == PM_MODE_LIGHT_SLEEP && !s_light_sleep_en) { /* don't display light sleep mode if it's not enabled */ continue; } - fprintf(out, "%8s %3dM %12lld %2d%%\n", + fprintf(out, "%-8s %-3dM%-7s %-10lld %-2d%%\n", s_mode_names[i], s_cpu_freq_by_mode[i].freq_mhz, + "", //Empty space to align columns time_in_mode[i], (int) (time_in_mode[i] * 100 / now)); } diff --git a/components/esp_pm/pm_locks.c b/components/esp_pm/pm_locks.c index 79a6081689..db929cc507 100644 --- a/components/esp_pm/pm_locks.c +++ b/components/esp_pm/pm_locks.c @@ -168,10 +168,16 @@ esp_err_t esp_pm_dump_locks(FILE* stream) _lock_acquire(&s_list_lock); #ifdef WITH_PROFILING - fprintf(stream, "Time: %lld\n", cur_time); + fprintf(stream, "Time since bootup: %lld us\n", cur_time); #endif fprintf(stream, "Lock stats:\n"); +#ifdef WITH_PROFILING + fprintf(stream, "%-15s %-14s %-5s %-8s %-13s %-8s %-8s\n", + "Name", "Type", "Arg", "Active", "Total_count", "Time(us)", "Time(%)"); +#else + fprintf(stream, "%-15s %-14s %-5s %-8s\n", "Name", "Type", "Arg", "Active"); +#endif esp_pm_lock_t* it; char line[80]; SLIST_FOREACH(it, &s_list, next) { @@ -193,12 +199,12 @@ esp_err_t esp_pm_dump_locks(FILE* stream) if (it->count > 0) { time_held += cur_time - it->last_taken; } - snprintf(buf, len, "%14s %3d %3d %9d %12lld %3lld%%\n", + snprintf(buf, len, "%-14s %-5d %-8d %-13d %-8lld %-3lld%%\n", s_lock_type_names[it->type], it->arg, it->count, it->times_taken, time_held, (time_held + cur_time_d100 - 1) / cur_time_d100); #else - snprintf(buf, len, "%14s %3d %3d\n", s_lock_type_names[it->type], it->arg, it->count); + snprintf(buf, len, "%-14s %-5d %-8d\n", s_lock_type_names[it->type], it->arg, it->count); #endif // WITH_PROFILING portEXIT_CRITICAL(&it->spinlock); fputs(line, stream); From f33fbdcd2d80500f2aac56f18a7f61d410784112 Mon Sep 17 00:00:00 2001 From: wuzhenghui Date: Tue, 20 Jun 2023 19:12:58 +0800 Subject: [PATCH 2/2] bugfix: increase pm_dump time field width Closes https://github.com/espressif/esp-idf/issues/11704 --- components/esp_pm/pm_locks.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/components/esp_pm/pm_locks.c b/components/esp_pm/pm_locks.c index db929cc507..bfdc6436ac 100644 --- a/components/esp_pm/pm_locks.c +++ b/components/esp_pm/pm_locks.c @@ -1,16 +1,8 @@ -// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2016-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include #include @@ -173,13 +165,13 @@ esp_err_t esp_pm_dump_locks(FILE* stream) fprintf(stream, "Lock stats:\n"); #ifdef WITH_PROFILING - fprintf(stream, "%-15s %-14s %-5s %-8s %-13s %-8s %-8s\n", + fprintf(stream, "%-15s %-14s %-5s %-8s %-13s %-14s %-8s\n", "Name", "Type", "Arg", "Active", "Total_count", "Time(us)", "Time(%)"); #else fprintf(stream, "%-15s %-14s %-5s %-8s\n", "Name", "Type", "Arg", "Active"); #endif esp_pm_lock_t* it; - char line[80]; + char line[128]; SLIST_FOREACH(it, &s_list, next) { char *buf = line; size_t len = sizeof(line); @@ -199,7 +191,7 @@ esp_err_t esp_pm_dump_locks(FILE* stream) if (it->count > 0) { time_held += cur_time - it->last_taken; } - snprintf(buf, len, "%-14s %-5d %-8d %-13d %-8lld %-3lld%%\n", + snprintf(buf, len, "%-14s %-5d %-8d %-13d %-14lld %-3lld%%\n", s_lock_type_names[it->type], it->arg, it->count, it->times_taken, time_held, (time_held + cur_time_d100 - 1) / cur_time_d100);