projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
uatomic: Specify complete types for atomic function calls
[urcu.git]
/
urcu
/
uatomic
/
generic.h
diff --git
a/urcu/uatomic/generic.h
b/urcu/uatomic/generic.h
index bfd9b68f3b14bac2617ede3e51f8285090b05d77..5bb0d4f983c3b96c920827b991b6798fadc5cbbd 100644
(file)
--- a/
urcu/uatomic/generic.h
+++ b/
urcu/uatomic/generic.h
@@
-21,6
+21,7
@@
* Boehm-Demers-Weiser conservative garbage collector.
*/
* Boehm-Demers-Weiser conservative garbage collector.
*/
+#include <stdint.h>
#include <urcu/compiler.h>
#include <urcu/system.h>
#include <urcu/compiler.h>
#include <urcu/system.h>
@@
-29,7
+30,7
@@
extern "C" {
#endif
#ifndef uatomic_set
#endif
#ifndef uatomic_set
-#define uatomic_set(addr, v)
CMM_STORE_SHARED(*(addr), (v
))
+#define uatomic_set(addr, v)
((void) CMM_STORE_SHARED(*(addr), (v)
))
#endif
#ifndef uatomic_read
#endif
#ifndef uatomic_read
@@
-38,19
+39,21
@@
extern "C" {
#if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR
static inline __attribute__((always_inline))
#if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR
static inline __attribute__((always_inline))
-void _uatomic_link_error()
+void _uatomic_link_error(
void
)
{
#ifdef ILLEGAL_INSTR
{
#ifdef ILLEGAL_INSTR
- /* generate an illegal instruction. Cannot catch this with linker tricks
- * when optimizations are disabled. */
+ /*
+ * generate an illegal instruction. Cannot catch this with
+ * linker tricks when optimizations are disabled.
+ */
__asm__ __volatile__(ILLEGAL_INSTR);
#else
__asm__ __volatile__(ILLEGAL_INSTR);
#else
- __builtin_trap
();
+ __builtin_trap();
#endif
}
#else /* #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */
#endif
}
#else /* #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */
-extern void _uatomic_link_error
(
);
+extern void _uatomic_link_error
(void
);
#endif /* #else #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */
/* cmpxchg */
#endif /* #else #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */
/* cmpxchg */
@@
-63,17
+66,21
@@
unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
- return __sync_val_compare_and_swap_1(addr, old, _new);
+ return __sync_val_compare_and_swap_1((uint8_t *) addr, old,
+ _new);
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
- return __sync_val_compare_and_swap_2(addr, old, _new);
+ return __sync_val_compare_and_swap_2((uint16_t *) addr, old,
+ _new);
#endif
case 4:
#endif
case 4:
- return __sync_val_compare_and_swap_4(addr, old, _new);
+ return __sync_val_compare_and_swap_4((uint32_t *) addr, old,
+ _new);
#if (CAA_BITS_PER_LONG == 64)
case 8:
#if (CAA_BITS_PER_LONG == 64)
case 8:
- return __sync_val_compare_and_swap_8(addr, old, _new);
+ return __sync_val_compare_and_swap_8((uint64_t *) addr, old,
+ _new);
#endif
}
_uatomic_link_error();
#endif
}
_uatomic_link_error();
@@
-98,20
+105,20
@@
void _uatomic_and(void *addr, unsigned long val,
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
- __sync_and_and_fetch_1(addr, val);
+ __sync_and_and_fetch_1(
(uint8_t *)
addr, val);
return;
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
return;
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
- __sync_and_and_fetch_2(addr, val);
+ __sync_and_and_fetch_2(
(uint16_t *)
addr, val);
return;
#endif
case 4:
return;
#endif
case 4:
- __sync_and_and_fetch_4(addr, val);
+ __sync_and_and_fetch_4(
(uint32_t *)
addr, val);
return;
#if (CAA_BITS_PER_LONG == 64)
case 8:
return;
#if (CAA_BITS_PER_LONG == 64)
case 8:
- __sync_and_and_fetch_8(addr, val);
+ __sync_and_and_fetch_8(
(uint64_t *)
addr, val);
return;
#endif
}
return;
#endif
}
@@
-137,20
+144,20
@@
void _uatomic_or(void *addr, unsigned long val,
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
- __sync_or_and_fetch_1(addr, val);
+ __sync_or_and_fetch_1(
(uint8_t *)
addr, val);
return;
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
return;
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
- __sync_or_and_fetch_2(addr, val);
+ __sync_or_and_fetch_2(
(uint16_t *)
addr, val);
return;
#endif
case 4:
return;
#endif
case 4:
- __sync_or_and_fetch_4(addr, val);
+ __sync_or_and_fetch_4(
(uint32_t *)
addr, val);
return;
#if (CAA_BITS_PER_LONG == 64)
case 8:
return;
#if (CAA_BITS_PER_LONG == 64)
case 8:
- __sync_or_and_fetch_8(addr, val);
+ __sync_or_and_fetch_8(
(uint64_t *)
addr, val);
return;
#endif
}
return;
#endif
}
@@
-178,17
+185,17
@@
unsigned long _uatomic_add_return(void *addr, unsigned long val,
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
switch (len) {
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
- return __sync_add_and_fetch_1(addr, val);
+ return __sync_add_and_fetch_1(
(uint8_t *)
addr, val);
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
#endif
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
- return __sync_add_and_fetch_2(addr, val);
+ return __sync_add_and_fetch_2(
(uint16_t *)
addr, val);
#endif
case 4:
#endif
case 4:
- return __sync_add_and_fetch_4(addr, val);
+ return __sync_add_and_fetch_4(
(uint32_t *)
addr, val);
#if (CAA_BITS_PER_LONG == 64)
case 8:
#if (CAA_BITS_PER_LONG == 64)
case 8:
- return __sync_add_and_fetch_8(addr, val);
+ return __sync_add_and_fetch_8(
(uint64_t *)
addr, val);
#endif
}
_uatomic_link_error();
#endif
}
_uatomic_link_error();
@@
-212,11
+219,12
@@
unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
- u
nsigned char
old;
+ u
int8_t
old;
do {
do {
- old = uatomic_read((unsigned char *)addr);
- } while (!__sync_bool_compare_and_swap_1(addr, old, val));
+ old = uatomic_read((uint8_t *) addr);
+ } while (!__sync_bool_compare_and_swap_1((uint8_t *) addr,
+ old, val));
return old;
}
return old;
}
@@
-224,33
+232,36
@@
unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
- u
nsigned shor
t old;
+ u
int16_
t old;
do {
do {
- old = uatomic_read((unsigned short *)addr);
- } while (!__sync_bool_compare_and_swap_2(addr, old, val));
+ old = uatomic_read((uint16_t *) addr);
+ } while (!__sync_bool_compare_and_swap_2((uint16_t *) addr,
+ old, val));
return old;
}
#endif
case 4:
{
return old;
}
#endif
case 4:
{
- u
nsigned in
t old;
+ u
int32_
t old;
do {
do {
- old = uatomic_read((unsigned int *)addr);
- } while (!__sync_bool_compare_and_swap_4(addr, old, val));
+ old = uatomic_read((uint32_t *) addr);
+ } while (!__sync_bool_compare_and_swap_4((uint32_t *) addr,
+ old, val));
return old;
}
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
return old;
}
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
- u
nsigned long
old;
+ u
int64_t
old;
do {
do {
- old = uatomic_read((unsigned long *)addr);
- } while (!__sync_bool_compare_and_swap_8(addr, old, val));
+ old = uatomic_read((uint64_t *) addr);
+ } while (!__sync_bool_compare_and_swap_8((uint64_t *) addr,
+ old, val));
return old;
}
return old;
}
@@
-278,9
+289,9
@@
void _uatomic_and(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
- u
nsigned char
old, oldt;
+ u
int8_t
old, oldt;
- oldt = uatomic_read((u
nsigned char *)
addr);
+ oldt = uatomic_read((u
int8_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 1);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 1);
@@
-292,9
+303,9
@@
void _uatomic_and(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
- u
nsigned shor
t old, oldt;
+ u
int16_
t old, oldt;
- oldt = uatomic_read((u
nsigned short *)
addr);
+ oldt = uatomic_read((u
int16_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 2);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 2);
@@
-303,9
+314,9
@@
void _uatomic_and(void *addr, unsigned long val, int len)
#endif
case 4:
{
#endif
case 4:
{
- u
nsigned in
t old, oldt;
+ u
int32_
t old, oldt;
- oldt = uatomic_read((u
nsigned int *)
addr);
+ oldt = uatomic_read((u
int32_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 4);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 4);
@@
-316,9
+327,9
@@
void _uatomic_and(void *addr, unsigned long val, int len)
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
- u
nsigned long
old, oldt;
+ u
int64_t
old, oldt;
- oldt = uatomic_read((u
nsigned long *)
addr);
+ oldt = uatomic_read((u
int64_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 8);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old & val, 8);
@@
-350,9
+361,9
@@
void _uatomic_or(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
- u
nsigned char
old, oldt;
+ u
int8_t
old, oldt;
- oldt = uatomic_read((u
nsigned char *)
addr);
+ oldt = uatomic_read((u
int8_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 1);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 1);
@@
-364,9
+375,9
@@
void _uatomic_or(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
- u
nsigned shor
t old, oldt;
+ u
int16_
t old, oldt;
- oldt = uatomic_read((u
nsigned short *)
addr);
+ oldt = uatomic_read((u
int16_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 2);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 2);
@@
-377,9
+388,9
@@
void _uatomic_or(void *addr, unsigned long val, int len)
#endif
case 4:
{
#endif
case 4:
{
- u
nsigned in
t old, oldt;
+ u
int32_
t old, oldt;
- oldt = uatomic_read((u
nsigned int *)
addr);
+ oldt = uatomic_read((u
int32_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 4);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 4);
@@
-390,9
+401,9
@@
void _uatomic_or(void *addr, unsigned long val, int len)
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
- u
nsigned long
old, oldt;
+ u
int64_t
old, oldt;
- oldt = uatomic_read((u
nsigned long *)
addr);
+ oldt = uatomic_read((u
int64_t *)
addr);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 8);
do {
old = oldt;
oldt = _uatomic_cmpxchg(addr, old, old | val, 8);
@@
-424,12
+435,12
@@
unsigned long _uatomic_add_return(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
- u
nsigned char
old, oldt;
+ u
int8_t
old, oldt;
- oldt = uatomic_read((u
nsigned char *)
addr);
+ oldt = uatomic_read((u
int8_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned char *)
addr,
+ oldt = uatomic_cmpxchg((u
int8_t *)
addr,
old, old + val);
} while (oldt != old);
old, old + val);
} while (oldt != old);
@@
-439,12
+450,12
@@
unsigned long _uatomic_add_return(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
- u
nsigned shor
t old, oldt;
+ u
int16_
t old, oldt;
- oldt = uatomic_read((u
nsigned short *)
addr);
+ oldt = uatomic_read((u
int16_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned short *)
addr,
+ oldt = uatomic_cmpxchg((u
int16_t *)
addr,
old, old + val);
} while (oldt != old);
old, old + val);
} while (oldt != old);
@@
-453,12
+464,12
@@
unsigned long _uatomic_add_return(void *addr, unsigned long val, int len)
#endif
case 4:
{
#endif
case 4:
{
- u
nsigned in
t old, oldt;
+ u
int32_
t old, oldt;
- oldt = uatomic_read((u
nsigned int *)
addr);
+ oldt = uatomic_read((u
int32_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned int *)
addr,
+ oldt = uatomic_cmpxchg((u
int32_t *)
addr,
old, old + val);
} while (oldt != old);
old, old + val);
} while (oldt != old);
@@
-467,12
+478,12
@@
unsigned long _uatomic_add_return(void *addr, unsigned long val, int len)
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
- u
nsigned long
old, oldt;
+ u
int64_t
old, oldt;
- oldt = uatomic_read((u
nsigned long *)
addr);
+ oldt = uatomic_read((u
int64_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned long *)
addr,
+ oldt = uatomic_cmpxchg((u
int64_t *)
addr,
old, old + val);
} while (oldt != old);
old, old + val);
} while (oldt != old);
@@
-500,12
+511,12
@@
unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
#ifdef UATOMIC_HAS_ATOMIC_BYTE
case 1:
{
- u
nsigned char
old, oldt;
+ u
int8_t
old, oldt;
- oldt = uatomic_read((u
nsigned char *)
addr);
+ oldt = uatomic_read((u
int8_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned char *)
addr,
+ oldt = uatomic_cmpxchg((u
int8_t *)
addr,
old, val);
} while (oldt != old);
old, val);
} while (oldt != old);
@@
-515,12
+526,12
@@
unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
#ifdef UATOMIC_HAS_ATOMIC_SHORT
case 2:
{
- u
nsigned shor
t old, oldt;
+ u
int16_
t old, oldt;
- oldt = uatomic_read((u
nsigned short *)
addr);
+ oldt = uatomic_read((u
int16_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned short *)
addr,
+ oldt = uatomic_cmpxchg((u
int16_t *)
addr,
old, val);
} while (oldt != old);
old, val);
} while (oldt != old);
@@
-529,12
+540,12
@@
unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
#endif
case 4:
{
#endif
case 4:
{
- u
nsigned in
t old, oldt;
+ u
int32_
t old, oldt;
- oldt = uatomic_read((u
nsigned int *)
addr);
+ oldt = uatomic_read((u
int32_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned int *)
addr,
+ oldt = uatomic_cmpxchg((u
int32_t *)
addr,
old, val);
} while (oldt != old);
old, val);
} while (oldt != old);
@@
-543,12
+554,12
@@
unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
#if (CAA_BITS_PER_LONG == 64)
case 8:
{
- u
nsigned long
old, oldt;
+ u
int64_t
old, oldt;
- oldt = uatomic_read((u
nsigned long *)
addr);
+ oldt = uatomic_read((u
int64_t *)
addr);
do {
old = oldt;
do {
old = oldt;
- oldt = uatomic_cmpxchg((u
nsigned long *)
addr,
+ oldt = uatomic_cmpxchg((u
int64_t *)
addr,
old, val);
} while (oldt != old);
old, val);
} while (oldt != old);
This page took
0.038602 seconds
and
4
git commands to generate.