Quality RTOS & Embedded Software

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


Loading

reentrant functions, 32 bit vars and mutex

Posted by joe_her on June 14, 2015

Assume a function that is called from 2 different unrelated tasks. If the function is fully reentrant (no static or global vars), is it safe to use without a mutex? if the function uses a global var, which is set only at initialization, and then is read only, is it safe to call from 2 different tasks? in a 32 bit system (STM32F4) is it safe to read/write to 32 bit variable from 2 different tasks without a mutex (I assume 32 bit write is an atomic operation).

Thanks Johanan


reentrant functions, 32 bit vars and mutex

Posted by davedoors on June 14, 2015

If the function is fully reentrant (no static or global vars), is it safe to use without a mutex?

yes

if the function uses a global var, which is set only at initialization, and then is read only, is it safe to call from 2 different tasks?

yes

in a 32 bit system (STM32F4) is it safe to read/write to 32 bit variable from 2 different tasks without a mutex (I assume 32 bit write is an atomic operation).

It is ok for one task to read the variable and one task to write the variable, but not normally for more than one task to write the variable. On an STM32F4 an operation like ++, --, +=, *, etc is not atomic, but actually a read-modify-write operation. Look as the asm code to see why.


reentrant functions, 32 bit vars and mutex

Posted by joe_her on June 14, 2015

Thanks Dave.


[ 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.

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.


Careers

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

Renesas

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