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] [October 2007 Threads] task Posted by Pietro on October 11, 2007 what are the differences between a task definited (and declared)
static void vPCtask( void *pvParameters ) {...}
and a task definited (and declared)
static portTASK_FUNCTION( vPCtask, pvParameters ) {...} ?
What is the more correct definition (declaration)?
RE: task Posted by Dave on October 11, 2007 Some ports (WizC I think) want extra qualifiers on task functions. The macros let you do this. Also, you might want to have your task functions declared as "no return" so they don't waste stack space saving registers on entry that are never going to get popped off the stack again. In either of these cases you can use the macro to perform the extra qualification. In all other cases there is no difference between the two methods.
RE: task Posted by Darrik Spaude on October 11, 2007 My guess is that this is a convention used to generate one set of source code that can deal with different compilers. If either method you gave as an example works for your compiler then there is no difference in your situation. You can declare the functions however you would like, but if you later port your code to another system/compiler then you might need to modify the declaration (but it isn't very likely you would need to do so). To avoid having to do that then you could declare them with the portTASK_FUNCTION().
Also, it is possible that the macro declaration could in the future add some other parameters specific to the port and in that case you would have to change all of your other non-portTASK_FUNCTION() declarations to match.
I chose to not use portTASK_FUNCTION() because the C parser of my IDE can't correctly parse such declarations.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|