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
Ignacio

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.

Regards.

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

}else{
     // the mutex is free

}

Thank you
Ignacio