How to peek a mutex?

ignacioam wrote on Friday, April 30, 2010:

Hi all:

I have a FreeRTOS system compiled and working, but now arised the need to know (from a control task)
if a mutex is free or taken without taking it, this is I need to “peek” the mutex, as when peeking a queue.
Is this possible?

Thanks in advance

richard_damon wrote on Friday, April 30, 2010:

One way to do this is a take with a 0 tick timeout, and if successful immediately give it back.

rtel wrote on Friday, April 30, 2010:

Semaphores and queues use the same data structures.  I have not actually tried, but think you could probably pass a semaphore handle into xQueuePeek() successfully.  Give it a test to see.


ignacioam wrote on Monday, May 03, 2010:

Yeiiii!! it worked!
You must provide that…

if(xQueuePeek((xQueueHandle)THE_mutex,(void *)NULL,(portTickType)NULL) != pdTRUE)

// the mutex is taken

     // the mutex is free


Thank you