I am trying to adapt a vendor printf/sprintf/sscanf library, which is not reentrant. I am looking for a way to set a global pointer to a task specific context value each time a task is switched in. So far, I’ve thought of extending the port context structure with another pointer (messy) or using a callback hook to set a global pointer everytime a task switch happens (better). Is there an official way or best way to do something like this? Thanks.
Actually, to be clear, what I want is a user global variable that changes with each task switch to a task-specific value, exactly like how pxCurrentTCB works.
Is there a way to do this with FreeRTOS?