Context Switch Hook

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.

Context Switch Hook

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?

Context Switch Hook

Search through the forum for threads that mention newlib as there is a link to a neat way of doing this with the newlib context pointer.