LCOV - code coverage report
Current view: top level - zephyr/sys - atomic_c.h Hit Total Coverage
Test: new.info Lines: 0 17 0.0 %
Date: 2024-12-21 18:13:37

          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 1.14