LSH-Core
Deterministic firmware core for Controllino-based Labo Smart Home nodes
 
Loading...
Searching...
No Matches
memory.cpp File Reference

Implements the free memory checking functions. More...

#include "util/debug/memory.hpp"
#include <WProgram.h>
Include dependency graph for memory.cpp:

Classes

struct  AvrFreeListEntry
 Internal structure used by avr-libc to manage the free memory list. More...
 

Typedefs

using AvrHeapStart = unsigned int
 

Functions

AvrHeapStart avrHeapStart asm ("__heap_start")
 
void *avrBreakValue asm ("__brkval")
 
AvrFreeListEntry *avrFreeListHead asm ("__flp")
 
auto freeListSize () -> size_t
 Calculate the total payload currently stored in avr-libc's free list.
 
auto freeMemory () -> size_t
 Estimate the amount of free SRAM currently available on the MCU.
 

Detailed Description

Implements the free memory checking functions.

Author
Jacopo Labardi (labodj)

Copyright 2026 Jacopo Labardi

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ freeListSize()

auto freeListSize ( ) -> size_t

Calculate the total payload currently stored in avr-libc's free list.

This helper walks the allocator free list so fragmented heap blocks contribute to the final free-memory estimate returned by freeMemory().

Returns
size_t Total bytes available inside the allocator free list.
Here is the caller graph for this function:

◆ freeMemory()

auto freeMemory ( ) -> size_t

Estimate the amount of free SRAM currently available on the MCU.

The implementation combines the stack-to-heap gap with the bytes stored in avr-libc's free list so fragmented allocations are counted too.

Returns
size_t Estimated free SRAM in bytes.
Here is the call graph for this function: