diff options
| author | lijia <[email protected]> | 2019-06-05 18:42:52 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2019-06-05 18:42:52 +0800 |
| commit | cb2152f52cdeb84c99d5ec53e018e5ac4a6fc301 (patch) | |
| tree | 674039fd44130ff694b489bddde035c1d5ef0eb1 /include/support | |
| parent | 49996782de45cb78fcdc824c506a99f4d3b7126a (diff) | |
1-增加定时器, 基于Libevent实现, 依赖库静态链接到sapp;
2-增加平台运行状态;
3-插件配置文件合并, 避免经常打开多个.inf的情况,
将原来的三个:conflist_platform.inf, conflist_protocol.inf, conflist_business.inf改为一个conflist.inf,
Diffstat (limited to 'include/support')
| -rw-r--r-- | include/support/MESA_atomic.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/support/MESA_atomic.h b/include/support/MESA_atomic.h new file mode 100644 index 0000000..7cddd08 --- /dev/null +++ b/include/support/MESA_atomic.h @@ -0,0 +1,41 @@ +#ifndef _MESA_ATOMIC_H_
+#define _MESA_ATOMIC_H_
+
+#ifdef __x86_64__
+
+#if(__GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__ >= 411)
+typedef unsigned long MESA_ATOMIC_T;
+#define MESA_ATOMIC_SET(v, i) __sync_lock_test_and_set((&v), i)
+#define MESA_ATOMIC_READ(v) __sync_or_and_fetch((&v), 0)
+#define MESA_ATOMIC_INC(v) __sync_add_and_fetch((&v),1)
+#define MESA_ATOMIC_DEC(v) __sync_sub_and_fetch((&v),1)
+#define MESA_ATOMIC_ADD(v,add) __sync_add_and_fetch((&v),(add))
+#define MESA_ATOMIC_SUB(v,sub) __sync_sub_and_fetch((&v),(sub))
+#define MESA_EQUAL_SET(v, old_val, new_val) __sync_val_compare_and_swap((&v), old_val, new_val); /* if(v == old_val){v = new_val}; return old_val; */
+#else
+#include <alsa/iatomic.h>
+typedef atomic_t MESA_ATOMIC_T;
+#define MESA_ATOMIC_SET(v, i) atomic_set((&v), i)
+#define MESA_ATOMIC_READ(v) atomic_read((&v))
+#define MESA_ATOMIC_INC(v) atomic_inc((&v))
+#define MESA_ATOMIC_DEC(v) atomic_dec((&v))
+#define MESA_ATOMIC_ADD(v, add) atomic_add((add),(&v))
+#define MESA_ATOMIC_SUB(v, sub) atomic_sub((sub),(&v))
+#endif
+
+#endif /* __x86_64__ */
+
+
+#ifdef __tilegx__
+#include <arch/atomic.h>
+typedef int MESA_ATOMIC_T;
+#define MESA_ATOMIC_SET(v, i) arch_atomic_exchange((&v), i)
+#define MESA_ATOMIC_READ(v) arch_atomic_or((&v), 0)
+#define MESA_ATOMIC_INC(v) arch_atomic_add((&v), 1)
+#define MESA_ATOMIC_DEC(v) arch_atomic_sub((&v), 1)
+#define MESA_ATOMIC_ADD(v, add) arch_atomic_add((&v), add)
+#define MESA_ATOMIC_SUB(v, sub) arch_atomic_sub((&v), sub)
+#endif
+
+
+#endif
|
