Calling xTaskCreate from within a task

nobody wrote on Wednesday, January 31, 2007:

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?

embeddedc wrote on Wednesday, January 31, 2007:

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.

nobody wrote on Thursday, February 01, 2007:

I did not know about the mandatory calling of vTaskDelete(NULL) before a task function reaches its end.  Is this mandatory in all cases?