Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
7#ifndef ZEPHYR_INCLUDE_SYS_BARRIER_H_
8#define ZEPHYR_INCLUDE_SYS_BARRIER_H_
9
10#include <zephyr/toolchain.h>
11
12#if defined(CONFIG_BARRIER_OPERATIONS_ARCH)
13# if defined(CONFIG_ARM)
15# elif defined(CONFIG_ARM64)
17# endif
18#elif defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
20#endif
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
39{
40#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
41 z_barrier_dmem_fence_full();
42#endif
43}
44
58{
59#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
60 z_barrier_dsync_fence_full();
61#endif
62}
63
77{
78#if defined(CONFIG_BARRIER_OPERATIONS_ARCH) || defined(CONFIG_BARRIER_OPERATIONS_BUILTIN)
79 z_barrier_isync_fence_full();
80#endif
81}
82
85#ifdef __cplusplus
86} /* extern "C" */
87#endif
88
89#endif /* ZEPHYR_INCLUDE_SYS_ATOMIC_H_ */
#define ALWAYS_INLINE
Definition: common.h:129
static ALWAYS_INLINE void barrier_isync_fence_full(void)
Full/sequentially-consistent instruction synchronization barrier.
Definition: barrier.h:76
static ALWAYS_INLINE void barrier_dsync_fence_full(void)
Full/sequentially-consistent data synchronization barrier.
Definition: barrier.h:57
static ALWAYS_INLINE void barrier_dmem_fence_full(void)
Full/sequentially-consistent data memory barrier.
Definition: barrier.h:38
Macros to abstract toolchain specific capabilities.