Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem


API for xSemaphoreGetMutexHolder

Posted by amomum on June 19, 2015

There is an API function xSemaphoreGetMutexHolder. For some reason, on the API page http://www.freertos.org/xSemaphoreGetMutexHolder.html return type is missing.

So I looked in the source code and saw that xSemaphoreGetMutexHolder is actually a macro for xQueueGetMutexHolder. And xQueueGetMutexHolder returns "void *" although it's prefix (x) should mean something else.

I'm not entirely sure what does x-prefix mean but every other functions that return "void *" are prefixed with "pv".

After reading API reference I figured out that it actually should return TaskHandle_t (which is a typedef for void *).

Although this is not a bug I'm not sure it's as it should be.


Return type is also missing in API references for xSemaphoreTake, xSemaphoreTakeFromISR, xSemaphoreTakeRecursive, xSemaphoreGive, xSemaphoreGiveRecursive and xSemaphoreGiveFromISR.

API for xSemaphoreGetMutexHolder

Posted by rtel on June 19, 2015
Thanks for pointing out the missing return type 
in the documentation - it has been corrected.

I suspect the function returns a void* because 
inside the queue.c the TaskHandle_t type is not 
known - and it can't be relied upon that an 
application writer will include task.h before 
queue.h.  Returning void* is ok as it can be cast 
to any type, and in this case TaskHandle_t is itself 
a void * - hence I have updated the documentation to 
show a TaskHandle_t being returned.


[edited to remove formatting as the forum uses the asterisk as a formatting character.]

API for xSemaphoreGetMutexHolder

Posted by amomum on June 19, 2015

I presume, including task.h inside queue.h is not acceptable? Then, I guess, it's okay.

As far as I can see, you didn't update API references for other functions that I mentioned.

[ Back to the top ]    [ About FreeRTOS ]    [ Privacy ]    [ Sitemap ]    [ ]

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS.

Meet Richard Barry and learn about running FreeRTOS on RISC-V at FOSDEM 2019

Version 10.1.1 of the FreeRTOS kernel is available for immediate download. MIT licensed.

View a recording of the "OTA Update Security and Reliability" webinar, presented by TI and AWS.


FreeRTOS and other embedded software careers at AWS.

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Espressif ESP32

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers


STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS

Xilinx Microblaze and Zynq partner