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# elif defined(CONFIG_ARC)
24# include <zephyr/arch/arc/barrier.h>
25# endif
26#elif defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
28#endif
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
41
49static ALWAYS_INLINE void barrier_sync_synchronize(void)
50{
51#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
52 z_barrier_sync_synchronize();
53#endif
54}
55
62static ALWAYS_INLINE void barrier_dmem_fence_full(void)
63{
64#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
65 z_barrier_dmem_fence_full();
66#endif
67}
68
81static ALWAYS_INLINE void barrier_dsync_fence_full(void)
82{
83#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
84 z_barrier_dsync_fence_full();
85#endif
86}
87
100static ALWAYS_INLINE void barrier_isync_fence_full(void)
101{
102#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
103 z_barrier_isync_fence_full();
104#endif
105}
106
108
109#ifdef __cplusplus
110} /* extern "C" */
111#endif
112
113#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:49
static ALWAYS_INLINE void barrier_isync_fence_full(void)
Full/sequentially-consistent instruction synchronization barrier.
Definition barrier.h:100
static ALWAYS_INLINE void barrier_dsync_fence_full(void)
Full/sequentially-consistent data synchronization barrier.
Definition barrier.h:81
static ALWAYS_INLINE void barrier_dmem_fence_full(void)
Full/sequentially-consistent data memory barrier.
Definition barrier.h:62
Macros to abstract toolchain specific capabilities.