|
Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
#include <stdbool.h>#include <zephyr/toolchain.h>#include <stddef.h>#include <zephyr/sys/atomic_types.h>#include <zephyr/types.h>#include <zephyr/sys/util.h>#include <zephyr/sys/atomic_builtin.h>Go to the source code of this file.
Macros | |
| #define | ATOMIC_INIT(i) (i) |
| Initialize an atomic variable. | |
| #define | ATOMIC_PTR_INIT(p) (p) |
| Initialize an atomic pointer variable. | |
| #define | ATOMIC_BITMAP_SIZE(num_bits) (ROUND_UP(num_bits, ATOMIC_BITS) / ATOMIC_BITS) |
| This macro computes the number of atomic variables necessary to represent a bitmap with num_bits. | |
| #define | ATOMIC_DEFINE(name, num_bits) atomic_t name[ATOMIC_BITMAP_SIZE(num_bits)] |
| Define an array of atomic variables. | |
Functions | |
| static bool | atomic_test_bit (const atomic_t *target, int bit) |
| Atomically get and test a bit. | |
| static bool | atomic_test_and_clear_bit (atomic_t *target, int bit) |
| Atomically clear a bit and test it. | |
| static bool | atomic_test_and_set_bit (atomic_t *target, int bit) |
| Atomically set a bit and test it. | |
| static void | atomic_clear_bit (atomic_t *target, int bit) |
| Atomically clear a bit. | |
| static void | atomic_set_bit (atomic_t *target, int bit) |
| Atomically set a bit. | |
| static void | atomic_set_bit_to (atomic_t *target, int bit, bool val) |
| Atomically set a bit to a given value. | |
| bool | atomic_cas (atomic_t *target, atomic_val_t old_value, atomic_val_t new_value) |
| Atomic compare-and-set. | |
| bool | atomic_ptr_cas (atomic_ptr_t *target, atomic_ptr_val_t old_value, atomic_ptr_val_t new_value) |
| Atomic compare-and-set with pointer values. | |
| atomic_val_t | atomic_add (atomic_t *target, atomic_val_t value) |
| Atomic addition. | |
| atomic_val_t | atomic_sub (atomic_t *target, atomic_val_t value) |
| Atomic subtraction. | |
| atomic_val_t | atomic_inc (atomic_t *target) |
| Atomic increment. | |
| atomic_val_t | atomic_dec (atomic_t *target) |
| Atomic decrement. | |
| atomic_val_t | atomic_get (const atomic_t *target) |
| Atomic get. | |
| atomic_ptr_val_t | atomic_ptr_get (const atomic_ptr_t *target) |
| Atomic get a pointer value. | |
| atomic_val_t | atomic_set (atomic_t *target, atomic_val_t value) |
| Atomic get-and-set. | |
| atomic_ptr_val_t | atomic_ptr_set (atomic_ptr_t *target, atomic_ptr_val_t value) |
| Atomic get-and-set for pointer values. | |
| atomic_val_t | atomic_clear (atomic_t *target) |
| Atomic clear. | |
| atomic_ptr_val_t | atomic_ptr_clear (atomic_ptr_t *target) |
| Atomic clear of a pointer value. | |
| atomic_val_t | atomic_or (atomic_t *target, atomic_val_t value) |
| Atomic bitwise inclusive OR. | |
| atomic_val_t | atomic_xor (atomic_t *target, atomic_val_t value) |
| Atomic bitwise exclusive OR (XOR). | |
| atomic_val_t | atomic_and (atomic_t *target, atomic_val_t value) |
| Atomic bitwise AND. | |
| atomic_val_t | atomic_nand (atomic_t *target, atomic_val_t value) |
| Atomic bitwise NAND. | |