[PATCH rtems v2] once.c, onceimplh.h: Make synchronization variable volatile
    Sebastian Huber 
    sebastian.huber at embedded-brains.de
       
    Tue Nov 21 11:35:34 UTC 2023
    
    
  
On 20.11.23 18:42, Joel Sherrill wrote:
> The loop that waits for another thread to complete the once
> initialization was flagged as a potential infinite loop.
> This is because there was no way to break out of the loop
> inside the loop.  The solution is to make the state variable
> volatile which indicates it may be modified by another thread
> of execution.
> 
> This was flagged by a user Coverity Scan run which apparently is
> configured differently from the instance provided by Coverity to
> open source projects.
This is a configuration issue of Coverity Scan. You have to teach 
Coverity Scan something about:
_Atomic_Fence( ATOMIC_ORDER_ACQUIRE );
_Atomic_Fence( ATOMIC_ORDER_RELEASE );
rtems_mutex_lock();
rtems_condition_variable_wait();
rtems_mutex_unlock();
Using "volatile" for multi-threaded synchronization is not correct in 
C11 or later. This keyword is for device access. For multi-threaded 
synchronization you need atomic operations or mutexes, etc. From my 
point of view, Coverity Scan should warn if you use volatile for 
multi-threaded synchronization.
-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
    
    
More information about the devel
mailing list