1
6
7
13
14
18
19
20
21
27
28
29
30
31
32
33
34
35
40
51
52
53
54
55
56
57
58
59
60
61
69
70
71
72
73
74
75
76
77
78
79
84
95
96
97
98
99
100
101
102
103
104
105
/* ... */
#include <string.h>
#include "FreeRTOS.h"
#include "task.h"
#include "esp_system.h"
#include "esp_memory_utils.h"
#include "sdkconfig.h"6 includes
/* ... */
/* ... */
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer,
StackType_t **ppxIdleTaskStackBuffer,
uint32_t *pulIdleTaskStackSize)
{
StaticTask_t *pxTCBBufferTemp;
StackType_t *pxStackBufferTemp;
/* ... */
#if (portSTACK_GROWTH > 0)
{
pxTCBBufferTemp = pvPortMalloc(sizeof(StaticTask_t));
pxStackBufferTemp = pvPortMalloc(configMINIMAL_STACK_SIZE);
}/* ... */
{...}#else
{
pxStackBufferTemp = pvPortMalloc(configMINIMAL_STACK_SIZE);
pxTCBBufferTemp = pvPortMalloc(sizeof(StaticTask_t));
}/* ... */
{...}#endif
assert(pxTCBBufferTemp != NULL);
assert(pxStackBufferTemp != NULL);
*ppxIdleTaskTCBBuffer = pxTCBBufferTemp;
*ppxIdleTaskStackBuffer = pxStackBufferTemp;
*pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
}{ ... }
#if ( ( CONFIG_FREERTOS_SMP ) && ( configNUMBER_OF_CORES > 1 ) )
void vApplicationGetPassiveIdleTaskMemory(StaticTask_t ** ppxIdleTaskTCBBuffer,
StackType_t ** ppxIdleTaskStackBuffer,
uint32_t * pulIdleTaskStackSize,
BaseType_t xPassiveIdleTaskIndex)
{
vApplicationGetIdleTaskMemory(ppxIdleTaskTCBBuffer, ppxIdleTaskStackBuffer, pulIdleTaskStackSize);
}{...}
/* ... */#endif
#if configUSE_TIMERS
void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer,
StackType_t **ppxTimerTaskStackBuffer,
uint32_t *pulTimerTaskStackSize)
{
StaticTask_t *pxTCBBufferTemp;
StackType_t *pxStackBufferTemp;
/* ... */
#if (portSTACK_GROWTH > 0)
{
pxTCBBufferTemp = pvPortMalloc(sizeof(StaticTask_t));
pxStackBufferTemp = pvPortMalloc(configTIMER_TASK_STACK_DEPTH);
}/* ... */
{...}#else
{
pxStackBufferTemp = pvPortMalloc(configTIMER_TASK_STACK_DEPTH);
pxTCBBufferTemp = pvPortMalloc(sizeof(StaticTask_t));
}/* ... */
{...}#endif
assert(pxTCBBufferTemp != NULL);
assert(pxStackBufferTemp != NULL);
*ppxTimerTaskTCBBuffer = pxTCBBufferTemp;
*ppxTimerTaskStackBuffer = pxStackBufferTemp;
*pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
}{ ... }
#endif/* ... */
/* ... */
FreeRTOS Static Allocation#endif