One missing feature in task manager is the ability to handle reentrant locking within a task. For example, that means suppose we have a lock on I2C for example, that we lock in method A, and then method A then callls method B, which again locks I2C, which should succeed as it's locked by the same running task. However, a lock from any other task would have to spin wait by calling back into the task manager yield function.
This requires the currently running task to be exposed on the task manager object.