projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update 386 cmpxchg support
[urcu.git]
/
urcu
/
uatomic_arch_x86.h
diff --git
a/urcu/uatomic_arch_x86.h
b/urcu/uatomic_arch_x86.h
index fccea8e2d350321ebe9cbf4517a68866e4b5fa19..dfb58763a37259b88a8962f9bd607767d5c59a3a 100644
(file)
--- a/
urcu/uatomic_arch_x86.h
+++ b/
urcu/uatomic_arch_x86.h
@@
-402,7
+402,13
@@
void _uatomic_dec(void *addr, int len)
#define compat_uatomic_cmpxchg(ptr, old, _new) uatomic_cmpxchg(ptr, old, _new)
#else
extern int __urcu_cas_avail;
#define compat_uatomic_cmpxchg(ptr, old, _new) uatomic_cmpxchg(ptr, old, _new)
#else
extern int __urcu_cas_avail;
-#define URCU_CAS_AVAIL() __urcu_cas_avail
+extern int __urcu_cas_init(void);
+#define URCU_CAS_AVAIL() \
+ ((likely(__urcu_cas_avail > 0)) ? \
+ (1) : \
+ ((unlikely(__urcu_cas_avail < 0) ? \
+ (__urcu_cas_init()) : \
+ (0))))
extern unsigned long _compat_uatomic_cmpxchg(void *addr, unsigned long old,
unsigned long _new, int len);
extern unsigned long _compat_uatomic_cmpxchg(void *addr, unsigned long old,
unsigned long _new, int len);
This page took
0.02256 seconds
and
4
git commands to generate.