summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/liburcu/liburcu/0001-uatomic-Specify-complete-types-for-atomic-function-c.patch
blob: 5ad0bbd1591702b3364c03bd28719f6395add145 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
From 6af790818d074c103c4797f1ce764896f183e028 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 22 Aug 2015 21:35:03 -0700
Subject: [PATCH] uatomic: Specify complete types for atomic function calls

This was unearthed by clang compiler where it complained about parameter
mismatch, gcc doesnt notice this

urcu/uatomic/generic.h:190:10: error: address argument to atomic builtin
must be a pointer to integer or pointer ('void *' invalid)
                return __sync_add_and_fetch_4(addr, val);

Fixed all instances thusly

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted

 urcu/uatomic/generic.h | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/urcu/uatomic/generic.h b/urcu/uatomic/generic.h
index 37f59cc..0046ffd 100644
--- a/urcu/uatomic/generic.h
+++ b/urcu/uatomic/generic.h
@@ -65,17 +65,17 @@ unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
 	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((unsigned char *)addr, old, _new);
 #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((unsigned short int *)addr, old, _new);
 #endif
 	case 4:
-		return __sync_val_compare_and_swap_4(addr, old, _new);
+		return __sync_val_compare_and_swap_4((unsigned int *)addr, old, _new);
 #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((unsigned long *)addr, old, _new);
 #endif
 	}
 	_uatomic_link_error();
@@ -100,20 +100,20 @@ void _uatomic_and(void *addr, unsigned long val,
 	switch (len) {
 #ifdef UATOMIC_HAS_ATOMIC_BYTE
 	case 1:
-		__sync_and_and_fetch_1(addr, val);
+		__sync_and_and_fetch_1((unsigned char *)addr, val);
 		return;
 #endif
 #ifdef UATOMIC_HAS_ATOMIC_SHORT
 	case 2:
-		__sync_and_and_fetch_2(addr, val);
+		__sync_and_and_fetch_2((unsigned short int *)addr, val);
 		return;
 #endif
 	case 4:
-		__sync_and_and_fetch_4(addr, val);
+		__sync_and_and_fetch_4((unsigned int *)addr, val);
 		return;
 #if (CAA_BITS_PER_LONG == 64)
 	case 8:
-		__sync_and_and_fetch_8(addr, val);
+		__sync_and_and_fetch_8((unsigned long *)addr, val);
 		return;
 #endif
 	}
@@ -139,20 +139,20 @@ void _uatomic_or(void *addr, unsigned long val,
 	switch (len) {
 #ifdef UATOMIC_HAS_ATOMIC_BYTE
 	case 1:
-		__sync_or_and_fetch_1(addr, val);
+		__sync_or_and_fetch_1((unsigned char *)addr, val);
 		return;
 #endif
 #ifdef UATOMIC_HAS_ATOMIC_SHORT
 	case 2:
-		__sync_or_and_fetch_2(addr, val);
+		__sync_or_and_fetch_2((unsigned short int *)addr, val);
 		return;
 #endif
 	case 4:
-		__sync_or_and_fetch_4(addr, val);
+		__sync_or_and_fetch_4((unsigned int *)addr, val);
 		return;
 #if (CAA_BITS_PER_LONG == 64)
 	case 8:
-		__sync_or_and_fetch_8(addr, val);
+		__sync_or_and_fetch_8((unsigned long *)addr, val);
 		return;
 #endif
 	}
@@ -180,17 +180,17 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val,
 	switch (len) {
 #ifdef UATOMIC_HAS_ATOMIC_BYTE
 	case 1:
-		return __sync_add_and_fetch_1(addr, val);
+		return __sync_add_and_fetch_1((unsigned char *)addr, val);
 #endif
 #ifdef UATOMIC_HAS_ATOMIC_SHORT
 	case 2:
-		return __sync_add_and_fetch_2(addr, val);
+		return __sync_add_and_fetch_2((unsigned short int *)addr, val);
 #endif
 	case 4:
-		return __sync_add_and_fetch_4(addr, val);
+		return __sync_add_and_fetch_4((unsigned int *)addr, val);
 #if (CAA_BITS_PER_LONG == 64)
 	case 8:
-		return __sync_add_and_fetch_8(addr, val);
+		return __sync_add_and_fetch_8((unsigned long *)addr, val);
 #endif
 	}
 	_uatomic_link_error();
@@ -218,7 +218,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
 
 		do {
 			old = uatomic_read((unsigned char *)addr);
-		} while (!__sync_bool_compare_and_swap_1(addr, old, val));
+		} while (!__sync_bool_compare_and_swap_1((unsigned char *)addr, old, val));
 
 		return old;
 	}
@@ -230,7 +230,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
 
 		do {
 			old = uatomic_read((unsigned short *)addr);
-		} while (!__sync_bool_compare_and_swap_2(addr, old, val));
+		} while (!__sync_bool_compare_and_swap_2((unsigned short int *)addr, old, val));
 
 		return old;
 	}
@@ -241,7 +241,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
 
 		do {
 			old = uatomic_read((unsigned int *)addr);
-		} while (!__sync_bool_compare_and_swap_4(addr, old, val));
+		} while (!__sync_bool_compare_and_swap_4((unsigned int *)addr, old, val));
 
 		return old;
 	}
@@ -252,7 +252,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
 
 		do {
 			old = uatomic_read((unsigned long *)addr);
-		} while (!__sync_bool_compare_and_swap_8(addr, old, val));
+		} while (!__sync_bool_compare_and_swap_8((unsigned long *)addr, old, val));
 
 		return old;
 	}
-- 
2.1.4