FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [April 2017 Threads] pcTaskGetName questionPosted by mitsoyba on April 5, 2017 FreeRTOS v9.0.0, tm4c123gh6pm MCU
Hi All,
I am trying to get a tasks name by using the pcTaskGetName function.
I tried from within the task with NULL as parameter and also from elsewhere with the tasks handle as a parameter, but i always get back a pointer to "main".
i use the following define as well:
INCLUDE_pcGetTaskName 1
Am i missing something?
Thanks in advance for your help.
Best regards,
Dim
pcTaskGetName questionPosted by rtel on April 5, 2017 What do you mean you get a pointer to "main"? The string "main", or the
main() function? Do you have task that is called "main"?
Are you calling this after the scheduler has been started?
The code for pcTaskGetName() is very simple, as below, step into it in
the debugger to see what it is doing.
char *pcTaskGetName( TaskHandle_t xTaskToQuery )
{
TCB_t *pxTCB;
/* If null is passed in here then the name of the calling task is being
queried. */
pxTCB = prvGetTCBFromHandle( xTaskToQuery );
configASSERT( pxTCB );
return &( pxTCB->pcTaskName[ 0 ] );
}
pcTaskGetName questionPosted by mitsoyba on April 5, 2017 Hi,
Sorry for not being clear about the pointer, its not the function but the string.
I call the function after the scheduler has started.
Offcourse i havent made another "main" function ;)
I will debug the project asap and let you know.
Thanks for the quick response.
Best regards,
Dim
pcTaskGetName questionPosted by mitsoyba on April 6, 2017 Hi,
I did a debug session as you suggested and it seems that whatever handle i provide for the pcTaskGetName, i always get back the "main" string.
Currently, i call pcTaskGetName from within a task after the task scheduler has started.
Please see attached images.
Best regards,
Dim
pcTaskGetName questionPosted by heinbali01 on April 6, 2017 pcTaskGetName( NULL ) will return the name of the task that is currently active.
So if you call pcTaskGetName( NULL ) from a task whose name is "main" , it is logical that it returns that string.
Didn't you create your task with xTaskCreate( pvFunction, "main", xxx) ?
If the idle-task would call pcTaskGetName( NULL ) , it would see "IDLE"
Or if your task would call pcTaskGetName( xIdleTaskHandle ) , it would also receive the string "IDLE"
( NB. TaskHandle_t xIdleTaskHandle is declared static in tasks.c , so you can not easily try that )
Does that answer your question?
pcTaskGetName questionPosted by mitsoyba on April 6, 2017 Hi Hein,
Thanks for your quick response and help.
Actaully i found out that i was passing the wrong pointer to a function hence the problem.
Sorry for wasting your time!
Best regards,
Dim
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|