Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
barrier.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Carlo Caione <ccaione@baylibre.com>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_SYS_BARRIER_H_
14#define ZEPHYR_INCLUDE_SYS_BARRIER_H_
15
16#include <zephyr/toolchain.h>
17
18#if defined(CONFIG_BARRIER_OPERATIONS_ARCH)
19# if defined(CONFIG_ARM)
20# include <zephyr/arch/arm/barrier.h>
21# elif defined(CONFIG_ARM64)
22# include <zephyr/arch/arm64/barrier.h>
23# endif
24#elif defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
26#endif
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
39
47static ALWAYS_INLINE void barrier_sync_synchronize(void)
48{
49#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
50 z_barrier_sync_synchronize();
51#endif
52}
53
60static ALWAYS_INLINE void barrier_dmem_fence_full(void)
61{
62#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
63 z_barrier_dmem_fence_full();
64#endif
65}
66
79static ALWAYS_INLINE void barrier_dsync_fence_full(void)
80{
81#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
82 z_barrier_dsync_fence_full();
83#endif
84}
85
98static ALWAYS_INLINE void barrier_isync_fence_full(void)
99{
100#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
101 z_barrier_isync_fence_full();
102#endif
103}
104
106
107#ifdef __cplusplus
108} /* extern "C" */
109#endif
110
111#endif /* ZEPHYR_INCLUDE_SYS_ATOMIC_H_ */
Compiler-builtin implementation of the memory barrier API.
static ALWAYS_INLINE void barrier_sync_synchronize(void)
Full/sequentially-consistent data memory barrier across cores.
Definition barrier.h:47
static ALWAYS_INLINE void barrier_isync_fence_full(void)
Full/sequentially-consistent instruction synchronization barrier.
Definition barrier.h:98
static ALWAYS_INLINE void barrier_dsync_fence_full(void)
Full/sequentially-consistent data synchronization barrier.
Definition barrier.h:79
static ALWAYS_INLINE void barrier_dmem_fence_full(void)
Full/sequentially-consistent data memory barrier.
Definition barrier.h:60
Macros to abstract toolchain specific capabilities.