Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT




Loading

Task creation in another task

Posted by *anonymous on December 6, 2013

When creating a task within another task as shown below

int main( void ) {

xTaskCreate( vTask1, "Task1", 500, NULL, 1, NULL );
vTaskStartScheduler();

for(;;);

}

void vTask1( void *pvParameters )
{

    xTaskCreate( vTask2, "Task2", 500, NULL, 1, NULL );
}

In this code vTask2 will create again and again in each call of vTask1 right? will that use separate memory for each creation?


Task creation in another task

Posted by rtel on December 6, 2013

The code, as you have provided it, is not correct because you show vTask1() exiting its function without deleting itself. Tasks must include an infinite loop, or be deleted. However, I assume you have cut out all the other source code to just show the line of interest.

First - it is perfectly ok to create tasks from inside other tasks.

Second - any call to xTaskCreate() will allocate a TCB structure and a stack for that task. If you create TaskX, then, without deleting TaskX you create TaskY the two tasks will not be using the same memory because both calls to xTaskCreate() will allocate RAM separately.

On the other hand, if you create TaskX then delete TaskX the memory allocated to TaskX will be freed again. If you subsequently create TaskY xTaskCreate() will allocate RAM for TaskY just like normal, and that RAM may or may not be the same that was previously allocated to TaskX. As TaskX has been deleted it does not matter if the same memory is reused.

Regards.


[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS kernel V10 is available for immediate download. Now MIT licensed.


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS