reent struct for freertos

gnuffel wrote on Monday, November 02, 2009:

I want to make calls through newlib from my tasks thread safe and reentrant - it seems like I need to let each task have its own reent structure, and have the scheduler re-point the impure_ptr to this struct each context switch. Has anyone done this in freertos, or have any idea on how it can be done?

rtel wrote on Monday, November 02, 2009:

Yes this is quite a common thing to do.  You can do it quite easily by modifying the tasks.c file, but even that is not necessary.  Instead you can create a reent structure for each task and use the traceTASK_SWITCHED_IN macro to assign impure_ptr to the correct structure on each context switch.

Also take a look at:

https://open-roadster.com/development/

SVN areas of interest:
https://open-roadster.com/svn/public/crooner/trunk/library/
https://open-roadster.com/svn/public/crooner/trunk/library/newlib
https://open-roadster.com/svn/public/crooner/trunk/library/freertos
https://open-roadster.com/svn/public/crooner/trunk/apps/make/Makefile.common

Which I believe is a project that uses both FreeRTOS and NewLIb, so you can copy what they have done.

Regards.

gnuffel wrote on Monday, November 02, 2009:

Thanks, will look into that when my strength returns after a weekend of struggling with the code :wink:

gnuffel wrote on Tuesday, November 03, 2009:

I ended up taking this approach, seems to work: http://sourceware.org/ml/newlib/2008/msg00384.html