| /* |
| * Copyright (c) 2022 Jeppe Odgaard |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/sys/sys_heap.h> |
| |
| #define HEAP_SIZE 256 |
| |
| static char heap_mem[HEAP_SIZE]; |
| static struct sys_heap heap; |
| |
| void print_sys_memory_stats(void); |
| |
| int main(void) |
| { |
| void *p; |
| |
| printk("System heap sample\n\n"); |
| |
| sys_heap_init(&heap, heap_mem, HEAP_SIZE); |
| print_sys_memory_stats(); |
| |
| p = sys_heap_alloc(&heap, 150); |
| print_sys_memory_stats(); |
| |
| p = sys_heap_realloc(&heap, p, 100); |
| print_sys_memory_stats(); |
| |
| sys_heap_free(&heap, p); |
| print_sys_memory_stats(); |
| return 0; |
| } |
| |
| void print_sys_memory_stats(void) |
| { |
| struct sys_memory_stats stats; |
| |
| sys_heap_runtime_stats_get(&heap, &stats); |
| |
| printk("allocated %zu, free %zu, max allocated %zu, heap size %u\n", |
| stats.allocated_bytes, stats.free_bytes, |
| stats.max_allocated_bytes, HEAP_SIZE); |
| } |