Calling xTaskCreate from within a task
Is it safe to call xTaskCreate() from within a task that is then removed from memory, either by exiting normally or being killed off before the second tasks completes?
I can see that doing this will obviously cause memory fragmentation, but could there be any other side effects or lack of portability?
Calling xTaskCreate from within a task
xTaskCreate() can be called from within a task. There is no link between the task that created it and the created task so you can safely delete either one without upsetting the other.
To delete a task you must call vTaskDelete(), not just run off the end of the task function. You can do this:
void task( void* )
{
while( 1 )
{
task code.
}
vTaskDelete( NULL );
}
to delete the task if the while loop ever exits.
Calling xTaskCreate from within a task
I did not know about the mandatory calling of vTaskDelete(NULL) before a task function reaches its end. Is this mandatory in all cases?