Skip to content

Commit

Permalink
Merge branch 'feature/add_rom_tlsf_function_prototype' into 'master'
Browse files Browse the repository at this point in the history
esp_rom: add rom tlsf function prototype instead of void *

See merge request espressif/esp-idf!20670
  • Loading branch information
suda-morris committed Oct 19, 2022
2 parents 818a186 + 932045c commit be2b57f
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 40 deletions.
32 changes: 0 additions & 32 deletions components/esp_rom/include/esp32c2/rom/tlsf.h

This file was deleted.

45 changes: 45 additions & 0 deletions components/esp_rom/include/esp_rom_tlsf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once
#include <stddef.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

/*!
* Defines the function prototypes for multi_heap_internal_poison_fill_region
* and multi_heap_internal_check_block_poisoning, these two function will
* be registered to the ROM tlsf IMPL through the function tlsf_poison_fill_pfunc_set()
* and tlsf_poison_check_pfunc_set() when the heap poisoning feature is enabled.
*/
typedef void (*poison_fill_pfunc_t)(void *start, size_t size, bool is_free);
typedef bool (*poison_check_pfunc_t)(void *start, size_t size, bool is_free, bool print_errors);

/*!
* @brief Set the function to call for filling memory region when
* poisoning is configured.
*
* @note Please keep in mind that this function in ROM still accepts void*.
*
* @param pfunc The callback function to trigger for poisoning
* a memory region.
*/
void tlsf_poison_fill_pfunc_set(poison_fill_pfunc_t pfunc);

/*!
* @brief Set the function to call for checking memory region when
* poisoning is configured.
*
* @param pfunc The callback function to trigger for checking
* the content of a memory region.
*/
void tlsf_poison_check_pfunc_set(poison_check_pfunc_t pfunc);

#ifdef __cplusplus
}
#endif
7 changes: 3 additions & 4 deletions components/esp_rom/patches/esp_rom_tlsf.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include <string.h>

#include "esp_rom_caps.h"
#include "rom/tlsf.h"
#include "esp_rom_tlsf.h"

/*!
* @brief Opaque types for TLSF implementation
Expand Down Expand Up @@ -164,12 +164,11 @@ static inline __attribute__((__always_inline__)) void mapping_insert(size_t size
* defined below
* ---------------------------------------------------------------- */

typedef bool (*poison_check_pfunc_t)(void *start, size_t size, bool is_free, bool print_errors);
static poison_check_pfunc_t s_poison_check_region = NULL;

void tlsf_poison_check_pfunc_set(void *pfunc)
void tlsf_poison_check_pfunc_set(poison_check_pfunc_t pfunc)
{
s_poison_check_region = (poison_check_pfunc_t)pfunc;
s_poison_check_region = pfunc;
}

#define tlsf_insist_no_assert(x) { if (!(x)) { status--; } }
Expand Down
6 changes: 2 additions & 4 deletions components/heap/multi_heap_poisoning.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,13 @@
/* Defines compile-time configuration macros */
#include "multi_heap_config.h"

#if !CONFIG_HEAP_TLSF_USE_ROM_IMPL
#include "tlsf.h"
#else
#if CONFIG_HEAP_TLSF_USE_ROM_IMPL
/* Header containing the declaration of tlsf_poison_fill_pfunc_set()
* and tlsf_poison_check_pfunc_set() used to register callbacks to
* fill and check memory region with given patterns in the heap
* components.
*/
#include "rom/tlsf.h"
#include "esp_rom_tlsf.h"
#endif

#ifdef MULTI_HEAP_POISONING
Expand Down

0 comments on commit be2b57f

Please sign in to comment.