ulTaskNotifyTake from ISR
Hi,
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.
Regards,
Remco Poelstra
ulTaskNotifyTake from ISR
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?
Regards.
ulTaskNotifyTake from ISR
Hi Remco,
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 );
}
~~~~~
Regards.