mirror of https://github.com/ArduPilot/ardupilot
30 lines
727 B
C++
30 lines
727 B
C++
/*
|
|
multiple heap interface, allowing for an allocator that uses
|
|
multiple underlying heaps to cope with multiple memory regions on
|
|
STM32 boards
|
|
*/
|
|
|
|
class MultiHeap {
|
|
public:
|
|
/*
|
|
allocate/deallocate heaps
|
|
*/
|
|
bool create(uint32_t total_size, uint8_t max_heaps);
|
|
void destroy(void);
|
|
|
|
// return true if the heap is available for operations
|
|
bool available(void) const;
|
|
|
|
// allocate memory within heaps
|
|
void *allocate(uint32_t size);
|
|
void deallocate(void *ptr);
|
|
|
|
// change allocated size of a pointer - this requires the old
|
|
// size, unlike realloc()
|
|
void *change_size(void *ptr, uint32_t old_size, uint32_t new_size);
|
|
|
|
private:
|
|
uint8_t num_heaps;
|
|
void **heaps;
|
|
};
|