Is it possible to use ulTaskNotifyTake() with a zero wait time from an ISR? I want to use it as a binary semaphore to get hold of a storage buffer.
It might [unofficially] be possible, but looking at the code I would say it would depend on which port you are using....which are you using?
I don't know if it is safe to call ulTaskNotifyTake() from an interrupt, but: normally the xxxTake would be called from within a task, and xxxGive from within an interrupt or a task.
Now you get an interrupt and you want to see if "a resource" is available?
Isn't a simple volatile flag enough for this?
#define FLAGBUSY 1
volatile uint32t flags;
void isr( void )
/* Here 'flags' is only read, not written. */
if( ( flags & FLAG_BUSY ) == 0 )
/* Buffer is available */
void update_buffer ()
flags |= FLAG_BUSY;
/* Buffer may be accessed */
flags &= ~( FLAG_BUSY );