XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
mb.h
浏览该文件的文档.
1
13#ifndef __xwos_lib_mb_h__
14#define __xwos_lib_mb_h__
15
16#include <cfg/project.h>
17
24#include <xwos/ospl/isa.h>
25
33// cppcheck-suppress [misra-c2012-20.7]
34#define xwmb_access(t, p) (*((volatile t *)(p)))
35
36#if !defined(xwmb_compiler) || defined(__DOXYGEN__)
40# define xwmb_compiler()
41#endif
42
43#if !defined(xwmb_mp_mb) || defined(__DOXYGEN__)
47# define xwmb_mp_mb()
48#endif
49
50#if !defined(xwmb_mp_rmb) || defined(__DOXYGEN__)
54# define xwmb_mp_rmb()
55#endif
56
57#if !defined(xwmb_mp_wmb) || defined(__DOXYGEN__)
61# define xwmb_mp_wmb()
62#endif
63
64#if !defined(xwmb_ddb) || defined(__DOXYGEN__)
132# define xwmb_ddb() xwmb_compiler()
133#endif
134
135#if !defined(xwmb_mp_consume) || defined(__DOXYGEN__)
139# define xwmb_mp_consume() xwmb_ddb()
140#endif
141
142#if !defined(xwmb_mp_acquire) || defined(__DOXYGEN__)
148# define xwmb_mp_acquire() xwmb_mp_mb()
149#endif
150
151#if !defined(xwmb_mp_release) || defined(__DOXYGEN__)
157# define xwmb_mp_release() xwmb_mp_mb()
158#endif
159
160#if !defined(xwmb_mp_load_acquire) || defined(__DOXYGEN__)
169#define xwmb_mp_load_acquire(t, v, p) \
170 do { \
171 xwmb_access(t, &(v)) = xwmb_access(t, p); \
172 xwmb_mp_acquire(); \
173 } while (0)
174#endif
175
176#if !defined(xwmb_mp_store_release) || defined(__DOXYGEN__)
185#define xwmb_mp_store_release(t, p, v) \
186 do { \
187 xwmb_mp_release(); \
188 xwmb_access(t, (p)) = (v); \
189 } while (0)
190#endif
191
196#endif /* xwos/lib/mb.h */