LCOV - code coverage report
Current view: top level - zephyr/sys - atomic_c.h Coverage Total Hit
Test: new.info Lines: 0.0 % 17 0
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 1997-2015, Wind River Systems, Inc.
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_SYS_ATOMIC_C_H_
       8              : #define ZEPHYR_INCLUDE_SYS_ATOMIC_C_H_
       9              : 
      10              : /* Included from <atomic.h> */
      11              : 
      12              : #ifdef __cplusplus
      13              : extern "C" {
      14              : #endif
      15              : 
      16              : /* Simple and correct (but very slow) implementation of atomic
      17              :  * primitives that require nothing more than kernel interrupt locking.
      18              :  */
      19              : 
      20            0 : __syscall bool atomic_cas(atomic_t *target, atomic_val_t old_value,
      21              :                          atomic_val_t new_value);
      22              : 
      23            0 : __syscall bool atomic_ptr_cas(atomic_ptr_t *target, atomic_ptr_val_t old_value,
      24              :                               atomic_ptr_val_t new_value);
      25              : 
      26            0 : __syscall atomic_val_t atomic_add(atomic_t *target, atomic_val_t value);
      27              : 
      28            0 : __syscall atomic_val_t atomic_sub(atomic_t *target, atomic_val_t value);
      29              : 
      30            0 : static inline atomic_val_t atomic_inc(atomic_t *target)
      31              : {
      32              :         return atomic_add(target, 1);
      33              : 
      34              : }
      35              : 
      36            0 : static inline atomic_val_t atomic_dec(atomic_t *target)
      37              : {
      38              :         return atomic_sub(target, 1);
      39              : 
      40              : }
      41              : 
      42            0 : atomic_val_t atomic_get(const atomic_t *target);
      43              : 
      44            0 : atomic_ptr_val_t atomic_ptr_get(const atomic_ptr_t *target);
      45              : 
      46            0 : __syscall atomic_val_t atomic_set(atomic_t *target, atomic_val_t value);
      47              : 
      48            0 : __syscall atomic_ptr_val_t atomic_ptr_set(atomic_ptr_t *target, atomic_ptr_val_t value);
      49              : 
      50            0 : static inline atomic_val_t atomic_clear(atomic_t *target)
      51              : {
      52              :         return atomic_set(target, 0);
      53              : 
      54              : }
      55              : 
      56            0 : static inline atomic_ptr_val_t atomic_ptr_clear(atomic_ptr_t *target)
      57              : {
      58              :         return atomic_ptr_set(target, NULL);
      59              : 
      60              : }
      61              : 
      62            0 : __syscall atomic_val_t atomic_or(atomic_t *target, atomic_val_t value);
      63              : 
      64            0 : __syscall atomic_val_t atomic_xor(atomic_t *target, atomic_val_t value);
      65              : 
      66            0 : __syscall atomic_val_t atomic_and(atomic_t *target, atomic_val_t value);
      67              : 
      68            0 : __syscall atomic_val_t atomic_nand(atomic_t *target, atomic_val_t value);
      69              : 
      70              : #ifdef __cplusplus
      71              : }
      72              : #endif
      73              : 
      74              : #ifdef CONFIG_ATOMIC_OPERATIONS_C
      75              : 
      76              : #ifndef DISABLE_SYSCALL_TRACING
      77              : /* Skip defining macros of atomic_*() for syscall tracing.
      78              :  * Compiler does not like "({ ... tracing code ... })" and complains
      79              :  *
      80              :  *   error: expected identifier or '(' before '{' token
      81              :  *
      82              :  * ... even though there is a '(' before '{'.
      83              :  */
      84              : #define DISABLE_SYSCALL_TRACING
      85              : #define _REMOVE_DISABLE_SYSCALL_TRACING
      86              : #endif
      87              : 
      88              : #include <zephyr/syscalls/atomic_c.h>
      89              : 
      90              : #ifdef _REMOVE_DISABLE_SYSCALL_TRACING
      91              : #undef DISABLE_SYSCALL_TRACING
      92              : #undef _REMOVE_DISABLE_SYSCALL_TRACING
      93              : #endif
      94              : 
      95              : #endif
      96              : 
      97              : #endif /* ZEPHYR_INCLUDE_SYS_ATOMIC_C_H_ */
        

Generated by: LCOV version 2.0-1