Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: STM32_F103-C8T6basecanblink_led
Fork of mbed-dev by
platform/mbed_stats.c
- Committer:
- AnnaBridge
- Date:
- 2018-04-19
- Revision:
- 185:08ed48f1de7f
- Parent:
- 167:e84263d55307
File content as of revision 185:08ed48f1de7f:
#include "mbed_stats.h"
#include <string.h>
#include <stdlib.h>
#include "mbed_assert.h"
#if MBED_CONF_RTOS_PRESENT
#include "cmsis_os2.h"
#endif
// note: mbed_stats_heap_get defined in mbed_alloc_wrappers.cpp
void mbed_stats_stack_get(mbed_stats_stack_t *stats)
{
memset(stats, 0, sizeof(mbed_stats_stack_t));
#if MBED_STACK_STATS_ENABLED && MBED_CONF_RTOS_PRESENT
uint32_t thread_n = osThreadGetCount();
unsigned i;
osThreadId_t *threads;
threads = malloc(sizeof(osThreadId_t) * thread_n);
MBED_ASSERT(threads != NULL);
osKernelLock();
thread_n = osThreadEnumerate(threads, thread_n);
for(i = 0; i < thread_n; i++) {
uint32_t stack_size = osThreadGetStackSize(threads[i]);
stats->max_size += stack_size - osThreadGetStackSpace(threads[i]);
stats->reserved_size += stack_size;
stats->stack_cnt++;
}
osKernelUnlock();
free(threads);
#endif
}
size_t mbed_stats_stack_get_each(mbed_stats_stack_t *stats, size_t count)
{
memset(stats, 0, count*sizeof(mbed_stats_stack_t));
size_t i = 0;
#if MBED_STACK_STATS_ENABLED && MBED_CONF_RTOS_PRESENT
osThreadId_t *threads;
threads = malloc(sizeof(osThreadId_t) * count);
MBED_ASSERT(threads != NULL);
osKernelLock();
count = osThreadEnumerate(threads, count);
for(i = 0; i < count; i++) {
uint32_t stack_size = osThreadGetStackSize(threads[i]);
stats[i].max_size = stack_size - osThreadGetStackSpace(threads[i]);
stats[i].reserved_size = stack_size;
stats[i].thread_id = (uint32_t)threads[i];
stats[i].stack_cnt = 1;
}
osKernelUnlock();
free(threads);
#endif
return i;
}
#if MBED_STACK_STATS_ENABLED && !MBED_CONF_RTOS_PRESENT
#warning Stack statistics are currently not supported without the rtos.
#endif
