1 Star 3 Fork 0

atari/opencv-mobile

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
opencv-4.5.4-unsafe-xadd.patch 2.08 KB
一键复制 编辑 原始数据 按行查看 历史
nihuini 提交于 2021-11-24 11:17 . update opencv 3.4.16 and 4.5.4
diff -Nuarp opencv-4.5.4/modules/core/include/opencv2/core/cvdef.h opencv-4.5.4.unsafe_xadd/modules/core/include/opencv2/core/cvdef.h
--- opencv-4.5.4/modules/core/include/opencv2/core/cvdef.h 2021-10-09 08:48:26.000000000 +0800
+++ opencv-4.5.4.unsafe_xadd/modules/core/include/opencv2/core/cvdef.h 2021-11-24 11:11:42.005453225 +0800
@@ -662,33 +662,7 @@ __CV_ENUM_FLAGS_BITWISE_XOR_EQ (EnumTy
* exchange-add operation for atomic operations on reference counters *
\****************************************************************************************/
-#ifdef CV_XADD
- // allow to use user-defined macro
-#elif defined __GNUC__ || defined __clang__
-# if defined __clang__ && __clang_major__ >= 3 && !defined __ANDROID__ && !defined __EMSCRIPTEN__ && !defined(__CUDACC__) && !defined __INTEL_COMPILER
-# ifdef __ATOMIC_ACQ_REL
-# define CV_XADD(addr, delta) __c11_atomic_fetch_add((_Atomic(int)*)(addr), delta, __ATOMIC_ACQ_REL)
-# else
-# define CV_XADD(addr, delta) __atomic_fetch_add((_Atomic(int)*)(addr), delta, 4)
-# endif
-# else
-# if defined __ATOMIC_ACQ_REL && !defined __clang__
- // version for gcc >= 4.7
-# define CV_XADD(addr, delta) (int)__atomic_fetch_add((unsigned*)(addr), (unsigned)(delta), __ATOMIC_ACQ_REL)
-# else
-# define CV_XADD(addr, delta) (int)__sync_fetch_and_add((unsigned*)(addr), (unsigned)(delta))
-# endif
-# endif
-#elif defined _MSC_VER && !defined RC_INVOKED
-# include <intrin.h>
-# define CV_XADD(addr, delta) (int)_InterlockedExchangeAdd((long volatile*)addr, delta)
-#else
- #ifdef OPENCV_FORCE_UNSAFE_XADD
- CV_INLINE int CV_XADD(int* addr, int delta) { int tmp = *addr; *addr += delta; return tmp; }
- #else
- #error "OpenCV: can't define safe CV_XADD macro for current platform (unsupported). Define CV_XADD macro through custom port header (see OPENCV_INCLUDE_PORT_FILE)"
- #endif
-#endif
+CV_INLINE int CV_XADD(void* addr, int delta) { int tmp = *(int*)addr; *(int*)addr += delta; return tmp; }
/****************************************************************************************\
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/atari/opencv-mobile.git
git@gitee.com:atari/opencv-mobile.git
atari
opencv-mobile
opencv-mobile
master

搜索帮助