samples: sys_heap: extend with k_heap_array_get
Extend the sample with a demonstration of `k_heap_array_get`. Signed-off-by: Jordan Yates <jordan@embeint.com>
This commit is contained in:
parent
f11bddbf6e
commit
4bd7e0bc94
@ -33,9 +33,14 @@ Sample Output
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
System heap sample
|
||||
System heap sample
|
||||
|
||||
allocated 0, free 196, max allocated 0, heap size 256
|
||||
allocated 156, free 36, max allocated 156, heap size 256
|
||||
allocated 100, free 92, max allocated 156, heap size 256
|
||||
allocated 0, free 196, max allocated 156, heap size 256
|
||||
allocated 0, free 196, max allocated 0, heap size 256
|
||||
allocated 156, free 36, max allocated 156, heap size 256
|
||||
allocated 100, free 92, max allocated 156, heap size 256
|
||||
allocated 0, free 196, max allocated 156, heap size 256
|
||||
1 static heap(s) allocated:
|
||||
0 - address 0x80552a8 allocated 12, free 180, max allocated 12, heap size 256
|
||||
2 heap(s) allocated (including static):
|
||||
0 - address 0x80552a8 allocated 12, free 180, max allocated 12, heap size 256
|
||||
1 - address 0x805530c allocated 0, free 196, max allocated 156, heap size 256
|
||||
|
||||
@ -15,6 +15,7 @@ static char heap_mem[HEAP_SIZE];
|
||||
static struct sys_heap heap;
|
||||
|
||||
static void print_sys_memory_stats(struct sys_heap *);
|
||||
static void print_static_heaps(void);
|
||||
static void print_all_heaps(void);
|
||||
|
||||
int main(void)
|
||||
@ -35,7 +36,17 @@ int main(void)
|
||||
sys_heap_free(&heap, p);
|
||||
print_sys_memory_stats(&heap);
|
||||
|
||||
/* Allocate from our custom k_heap to make the output
|
||||
* more interesting and prevent compiler optimisations from
|
||||
* discarding it.
|
||||
*/
|
||||
p = k_heap_alloc(&my_kernel_heap, 10, K_FOREVER);
|
||||
|
||||
print_static_heaps();
|
||||
print_all_heaps();
|
||||
|
||||
/* Cleanup memory */
|
||||
k_heap_free(&my_kernel_heap, p);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -50,16 +61,30 @@ static void print_sys_memory_stats(struct sys_heap *hp)
|
||||
stats.max_allocated_bytes, HEAP_SIZE);
|
||||
}
|
||||
|
||||
static void print_static_heaps(void)
|
||||
{
|
||||
struct k_heap *ha;
|
||||
int n;
|
||||
|
||||
n = k_heap_array_get(&ha);
|
||||
printk("%d static heap(s) allocated:\n", n);
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
printk("\t%d - address %p ", i, &ha[i]);
|
||||
print_sys_memory_stats(&ha[i].heap);
|
||||
}
|
||||
}
|
||||
|
||||
static void print_all_heaps(void)
|
||||
{
|
||||
struct sys_heap **ha;
|
||||
size_t i, n;
|
||||
int n;
|
||||
|
||||
n = sys_heap_array_get(&ha);
|
||||
printk("There are %zu heaps allocated:\n", n);
|
||||
printk("%d heap(s) allocated (including static):\n", n);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
printk("\t%zu - address %p ", i, ha[i]);
|
||||
for (int i = 0; i < n; i++) {
|
||||
printk("\t%d - address %p ", i, ha[i]);
|
||||
print_sys_memory_stats(ha[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user