Explorar el Código

heap_trace: unify API to pass caps param to heap_trace_dump()

Guillaume Souchere hace 3 años
padre
commit
c39a9de344

+ 1 - 6
components/app_trace/heap_trace_tohost.c

@@ -79,12 +79,7 @@ void heap_trace_dump(void)
     return;
 }
 
-void heap_trace_dump_internal_ram(void)
-{
-    return;
-}
-
-void heap_trace_dump_psram(void)
+void heap_trace_dump_caps(__attribute__((unused)) const uint32_t caps)
 {
     return;
 }

+ 8 - 13
components/heap/heap_trace_standalone.c

@@ -13,6 +13,7 @@
 #include "esp_attr.h"
 #include "freertos/FreeRTOS.h"
 #include "freertos/task.h"
+#include "esp_memory_utils.h"
 
 
 #define STACK_DEPTH CONFIG_HEAP_TRACING_STACK_DEPTH
@@ -156,16 +157,12 @@ esp_err_t heap_trace_summary(heap_trace_summary_t *summary)
     return ESP_OK;
 }
 
-void heap_trace_dump_internal_ram(void) {
-    heap_trace_dump_base(true, false);
+void heap_trace_dump(void) {
+    heap_trace_dump_caps(MALLOC_CAP_INTERNAL | MALLOC_CAP_SPIRAM);
 }
 
-void heap_trace_dump_psram(void) {
-    heap_trace_dump_base(false, true);
-}
-
-void heap_trace_dump(void) {
-    heap_trace_dump_base(true, true);
+void heap_trace_dump_caps(const uint32_t caps) {
+    heap_trace_dump_base(caps & MALLOC_CAP_INTERNAL, caps & MALLOC_CAP_SPIRAM);
 }
 
 static void heap_trace_dump_base(bool internal_ram, bool psram)
@@ -309,11 +306,9 @@ static IRAM_ATTR void record_free(void *p, void **callers)
 
         /* search backwards for the allocation record matching this free */
         int i = -1;
-        if (records.count > 0) {
-            for (i = records.count - 1; i >= 0; i--) {
-                if (records.buffer[i].address == p) {
-                    break;
-                }
+        for (i = records.count - 1; i >= 0; i--) {
+            if (records.buffer[i].address == p) {
+                break;
             }
         }
 

+ 6 - 15
components/heap/include/esp_heap_trace.h

@@ -155,23 +155,14 @@ esp_err_t heap_trace_get(size_t index, heap_trace_record_t *record);
 void heap_trace_dump(void);
 
 /**
- * @brief Same as heap_trace_dump() but will only log allocations in Internal-RAM
+ * @brief Dump heap trace from the memory of the capabilities passed as parameter.
  *
- * @note It is safe to call this function while heap tracing is
- * running, however in HEAP_TRACE_LEAK mode the dump may skip
- * entries unless heap tracing is stopped first.
+ * @param caps Capability(ies) of the memory from which to dump the trace.
+ * Set MALLOC_CAP_INTERNAL to dump heap trace data from internal memory.
+ * Set MALLOC_CAP_SPIRAM to dump heap trace data from PSRAM.
+ * Set both to dump both heap trace data.
  */
-void heap_trace_dump_internal_ram(void);
-
-/**
- * @brief Same as heap_trace_dump() but will only log allocations in PSRAM
- *
- * @note It is safe to call this function while heap tracing is
- * running, however in HEAP_TRACE_LEAK mode the dump may skip
- * entries unless heap tracing is stopped first.
- */
-void heap_trace_dump_psram(void);
-
+void heap_trace_dump_caps(const uint32_t caps);
 
 /**
  * @brief Get summary information about the result of a heap trace