C and C++


CONCURRENCY.C_ATOMIC.DAF : Direct Access to Field of C Atomic Object

Summary

An expression directly accesses a field of an atomic object of struct or union type.

Properties

Class Name Direct Access to Field of C Atomic Object
Significance reliability
Mnemonic CONCURRENCY.C_ATOMIC.DAF
Categories
MisraC2023 MisraC2023:12.6 Structure and union members of atomic objects shall not be directly accessed
Misra2012 Misra2012:12.6 Structure and union members of atomic objects shall not be directly accessed
Availability Available for C only (not C++).
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Direct Access to Field of C Atomic Object"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

#include <stdatomic.h>

typedef struct {
    int x;
} ss_t;

void atomic_daf(ss_t *nonatomic, _Atomic ss_t *atomicA, _Atomic ss_t *atomicB){
    atomicA->x = 0; /* 'Direct Access to Field of C Atomic Object' warning issued here */
    nonatomic->x = 0;                   /* ok: not an atomic object */
    atomic_store(atomicB, *nonatomic);  /* ok: not a direct field access */
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.