Просмотр исходного кода

esp_pm: fix formatting issues in esp_pm_dump_locks

- line was truncated because 64 characters were not sufficient
- length passed to snprintf should be full buffer length, not -1
- make the width of lock name field fixed
- fix alignment of lock type column
Ivan Grokhotkov 5 лет назад
Родитель
Сommit
95c360fcbd
1 измененных файлов с 6 добавлено и 6 удалено
  1. 6 6
      components/esp_common/src/pm_locks.c

+ 6 - 6
components/esp_common/src/pm_locks.c

@@ -173,19 +173,19 @@ esp_err_t esp_pm_dump_locks(FILE* stream)
 
 
     fprintf(stream, "Lock stats:\n");
     fprintf(stream, "Lock stats:\n");
     esp_pm_lock_t* it;
     esp_pm_lock_t* it;
-    char line[64];
+    char line[80];
     SLIST_FOREACH(it, &s_list, next) {
     SLIST_FOREACH(it, &s_list, next) {
         char *buf = line;
         char *buf = line;
-        size_t len = sizeof(line) - 1;
-        line[len] = 0;
+        size_t len = sizeof(line);
         size_t cb;
         size_t cb;
 
 
         portENTER_CRITICAL(&it->spinlock);
         portENTER_CRITICAL(&it->spinlock);
         if (it->name == NULL) {
         if (it->name == NULL) {
             cb = snprintf(buf, len, "lock@%p ", it);
             cb = snprintf(buf, len, "lock@%p ", it);
         } else {
         } else {
-            cb = snprintf(buf, len, "%-15s ", it->name);
+            cb = snprintf(buf, len, "%-15.15s ", it->name);
         }
         }
+        assert(cb <= len); // above formats should fit into sizeof(line)
         buf += cb;
         buf += cb;
         len -= cb;
         len -= cb;
 #ifdef WITH_PROFILING
 #ifdef WITH_PROFILING
@@ -193,12 +193,12 @@ esp_err_t esp_pm_dump_locks(FILE* stream)
         if (it->count > 0) {
         if (it->count > 0) {
             time_held += cur_time - it->last_taken;
             time_held += cur_time - it->last_taken;
         }
         }
-        snprintf(buf, len, "%10s  %3d  %3d  %9d  %9lld  %3lld%%\n",
+        snprintf(buf, len, "%14s  %3d  %3d  %9d  %12lld  %3lld%%\n",
                 s_lock_type_names[it->type], it->arg,
                 s_lock_type_names[it->type], it->arg,
                 it->count, it->times_taken, time_held,
                 it->count, it->times_taken, time_held,
                 (time_held + cur_time_d100 - 1) / cur_time_d100);
                 (time_held + cur_time_d100 - 1) / cur_time_d100);
 #else
 #else
-        snprintf(buf, len, "%10s  %3d  %3d\n", s_lock_type_names[it->type], it->arg, it->count);
+        snprintf(buf, len, "%14s  %3d  %3d\n", s_lock_type_names[it->type], it->arg, it->count);
 #endif // WITH_PROFILING
 #endif // WITH_PROFILING
         portEXIT_CRITICAL(&it->spinlock);
         portEXIT_CRITICAL(&it->spinlock);
         fputs(line, stream);
         fputs(line, stream);