FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [June 2015 Threads]
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
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.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.