Defined functions

junavas wrote on Friday, June 27, 2008:


I am new to FreeRTOS, I am studying it by curiosity and eventually to port it to another platform. I was reading the code and found that there is a lot of “functions” that are defined, not declared. I suppose that it was made to reduce the function calls and the memory usage and generated instructios that are involved with. But this can also produce a bigger memory footprint… I didn’t make an exhaustive analysis function per function (if it is called one time in OS life cycle, it is perfect), I wonder if some of you did it ?

GCC compiler (and others) can optimize source code inlining some functions, and you can even suggest GCC to do it (inline keyword); the advantage is that GCC analyse all the application, FreeRTOS developers cannot predict that :wink: , but obviously there would compatibility issues in common files (like tasks.c). Maybe one could use a defined keyword ? like

#define INLINE inline

in GCC ?


davedoors wrote on Friday, June 27, 2008:

There is always going to be a trade off. Which macros are you concerned about in particular?

The last FreeRTOS release actually removed all use of inline because it is a pain for some compilers (its not actually C).

junavas wrote on Friday, June 27, 2008:

I am not really concerned about any macro in particular, I am just wondering if anyone made some experments about converting these macros into real functions, and see how this modifies performance and memory footprint. Who knows, we couldd see some surprises !

"inline" is included in C99 standard but not in ANSI C.