Add FreeRTOS heap4 intro card
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
#include "heap4_common.h"
|
||||
|
||||
volatile size_t g_free_total;
|
||||
volatile size_t g_largest_free;
|
||||
volatile int g_node_count;
|
||||
|
||||
static size_t list_total(HeapBlock *start)
|
||||
{
|
||||
HeapBlock *block;
|
||||
size_t total;
|
||||
|
||||
total = 0U;
|
||||
for (block = start->next; block != 0; block = block->next)
|
||||
total += block->size;
|
||||
return total;
|
||||
}
|
||||
|
||||
static size_t list_largest(HeapBlock *start)
|
||||
{
|
||||
HeapBlock *block;
|
||||
size_t largest;
|
||||
|
||||
largest = 0U;
|
||||
for (block = start->next; block != 0; block = block->next)
|
||||
if (block->size > largest)
|
||||
largest = block->size;
|
||||
return largest;
|
||||
}
|
||||
|
||||
static int list_count(HeapBlock *start)
|
||||
{
|
||||
HeapBlock *block;
|
||||
int count;
|
||||
|
||||
count = 0;
|
||||
for (block = start->next; block != 0; block = block->next)
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
HeapBlock start;
|
||||
HeapBlock a;
|
||||
HeapBlock b;
|
||||
HeapBlock c;
|
||||
|
||||
start.next = &a;
|
||||
start.size = 0U;
|
||||
a.next = &b;
|
||||
a.size = 32U;
|
||||
b.next = &c;
|
||||
b.size = 80U;
|
||||
c.next = 0;
|
||||
c.size = 24U;
|
||||
|
||||
g_free_total = list_total(&start);
|
||||
g_largest_free = list_largest(&start);
|
||||
g_node_count = list_count(&start);
|
||||
|
||||
TRACE_PRINTF("free=%u largest=%u count=%d\n",
|
||||
(unsigned)g_free_total, (unsigned)g_largest_free, g_node_count);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user