Bläddra i källkod

heap: removed ptr check in diram area since aligned allocator does not support data allocated from IRAM

Felipe Neves 6 år sedan
förälder
incheckning
6a307ee70f
2 ändrade filer med 7 tillägg och 8 borttagningar
  1. 0 8
      components/heap/heap_caps.c
  2. 7 0
      components/heap/include/esp_heap_caps.h

+ 0 - 8
components/heap/heap_caps.c

@@ -576,14 +576,6 @@ IRAM_ATTR void heap_caps_aligned_free(void *ptr)
         return;
     }
 
-    if (esp_ptr_in_diram_iram(ptr)) {
-        //Memory allocated here is actually allocated in the DRAM alias region and
-        //cannot be de-allocated as usual. dram_alloc_to_iram_addr stores a pointer to
-        //the equivalent DRAM address, though; free that.
-        uint32_t *dramAddrPtr = (uint32_t *)ptr;
-        ptr = (void *)dramAddrPtr[-1];
-    }
-
     heap_t *heap = find_containing_heap(ptr);
     assert(heap != NULL && "free() target pointer is outside heap areas");
     multi_heap_aligned_free(heap->heap, ptr);

+ 7 - 0
components/heap/include/esp_heap_caps.h

@@ -96,6 +96,10 @@ void *heap_caps_realloc( void *ptr, size_t size, int caps);
  *                    of memory to be returned
  *
  * @return A pointer to the memory allocated on success, NULL on failure
+ * 
+ * @note Any memory allocated with heaps_caps_aligned_alloc() MUST 
+ * be freed with heap_caps_aligned_free() and CANNOT be passed to free()
+ * 
  */
 void *heap_caps_aligned_alloc(size_t alignment, size_t size, int caps);
 
@@ -110,6 +114,9 @@ void *heap_caps_aligned_alloc(size_t alignment, size_t size, int caps);
  *                    of memory to be returned
  *
  * @return A pointer to the memory allocated on success, NULL on failure
+ * 
+ * @note Any memory allocated with heap_caps_aligned_calloc() MUST 
+ * be freed with heap_caps_aligned_free() and CANNOT be passed to free()
  */
 void *heap_caps_aligned_calloc(size_t alignment, size_t n, size_t size, uint32_t caps);