I have been reading some other threads here and I noticed that when people are saying that a function is blocking, they mean that it is blocking the device and prevents it from running other processes, just like a while () loop that waits for something to be complete.
However in the above question, I mean exactly the opposite, that the function will block, meaning it will stop execution and the scheduler will perform a task switching, doing whatever it needs to do. Then, when the operation is completed, my blocked task will wake up and continue. This is also how blocking and non blocking is explained in the FreeRTOS documentation.
The functions I am asking for are special functions and the FreeRTOS provide an API not very different from the usual socket API.