@@ -57,113 +57,143 @@ uint32_t core_util_atomic_exchange_u32(volatile uint32_t *ptr, uint32_t desiredV
57
57
58
58
uint8_t core_util_atomic_incr_u8 (volatile uint8_t * valuePtr , uint8_t delta )
59
59
{
60
- return 0 ;
60
+ return * valuePtr += delta ;
61
61
}
62
62
63
63
uint16_t core_util_atomic_incr_u16 (volatile uint16_t * valuePtr , uint16_t delta )
64
64
{
65
- return 0 ;
65
+ return * valuePtr += delta ;
66
66
}
67
67
68
68
uint32_t core_util_atomic_incr_u32 (volatile uint32_t * valuePtr , uint32_t delta )
69
69
{
70
- return 0 ;
70
+ return * valuePtr += delta ;
71
71
}
72
72
73
73
74
74
uint8_t core_util_atomic_decr_u8 (volatile uint8_t * valuePtr , uint8_t delta )
75
75
{
76
- return 0 ;
76
+ return * valuePtr -= delta ;
77
77
}
78
78
79
79
uint16_t core_util_atomic_decr_u16 (volatile uint16_t * valuePtr , uint16_t delta )
80
80
{
81
- return 0 ;
81
+ return * valuePtr -= delta ;
82
82
}
83
83
84
84
uint32_t core_util_atomic_decr_u32 (volatile uint32_t * valuePtr , uint32_t delta )
85
85
{
86
- return 0 ;
86
+ return * valuePtr -= delta ;
87
87
}
88
88
89
89
90
90
uint8_t core_util_atomic_fetch_add_u8 (volatile uint8_t * valuePtr , uint8_t arg )
91
91
{
92
- return 0 ;
92
+ uint8_t v = * valuePtr ;
93
+ * valuePtr += arg ;
94
+ return v ;
93
95
}
94
96
95
97
uint16_t core_util_atomic_fetch_add_u16 (volatile uint16_t * valuePtr , uint16_t arg )
96
98
{
97
- return 0 ;
99
+ uint16_t v = * valuePtr ;
100
+ * valuePtr += arg ;
101
+ return v ;
98
102
}
99
103
100
104
uint32_t core_util_atomic_fetch_add_u32 (volatile uint32_t * valuePtr , uint32_t arg )
101
105
{
102
- return 0 ;
106
+ uint32_t v = * valuePtr ;
107
+ * valuePtr += arg ;
108
+ return v ;
103
109
}
104
110
105
111
106
112
uint8_t core_util_atomic_fetch_sub_u8 (volatile uint8_t * valuePtr , uint8_t arg )
107
113
{
108
- return 0 ;
114
+ uint8_t v = * valuePtr ;
115
+ * valuePtr -= arg ;
116
+ return v ;
109
117
}
110
118
111
119
uint16_t core_util_atomic_fetch_sub_u16 (volatile uint16_t * valuePtr , uint16_t arg )
112
120
{
113
- return 0 ;
121
+ uint16_t v = * valuePtr ;
122
+ * valuePtr -= arg ;
123
+ return v ;
114
124
}
115
125
116
126
uint32_t core_util_atomic_fetch_sub_u32 (volatile uint32_t * valuePtr , uint32_t arg )
117
127
{
118
- return 0 ;
128
+ uint32_t v = * valuePtr ;
129
+ * valuePtr -= arg ;
130
+ return v ;
119
131
}
120
132
121
133
122
134
uint8_t core_util_atomic_fetch_and_u8 (volatile uint8_t * valuePtr , uint8_t arg )
123
135
{
124
- return 0 ;
136
+ uint8_t v = * valuePtr ;
137
+ * valuePtr &= arg ;
138
+ return v ;
125
139
}
126
140
127
141
uint16_t core_util_atomic_fetch_and_u16 (volatile uint16_t * valuePtr , uint16_t arg )
128
142
{
129
- return 0 ;
143
+ uint16_t v = * valuePtr ;
144
+ * valuePtr &= arg ;
145
+ return v ;
130
146
}
131
147
132
148
uint32_t core_util_atomic_fetch_and_u32 (volatile uint32_t * valuePtr , uint32_t arg )
133
149
{
134
- return 0 ;
150
+ uint32_t v = * valuePtr ;
151
+ * valuePtr &= arg ;
152
+ return v ;
135
153
}
136
154
137
155
138
156
uint8_t core_util_atomic_fetch_or_u8 (volatile uint8_t * valuePtr , uint8_t arg )
139
157
{
140
- return 0 ;
158
+ uint8_t v = * valuePtr ;
159
+ * valuePtr |= arg ;
160
+ return v ;
141
161
}
142
162
143
163
uint16_t core_util_atomic_fetch_or_u16 (volatile uint16_t * valuePtr , uint16_t arg )
144
164
{
145
- return 0 ;
165
+ uint16_t v = * valuePtr ;
166
+ * valuePtr |= arg ;
167
+ return v ;
146
168
}
147
169
148
170
uint32_t core_util_atomic_fetch_or_u32 (volatile uint32_t * valuePtr , uint32_t arg )
149
171
{
150
- return 0 ;
172
+ uint32_t v = * valuePtr ;
173
+ * valuePtr |= arg ;
174
+ return v ;
151
175
}
152
176
153
177
154
178
uint8_t core_util_atomic_fetch_xor_u8 (volatile uint8_t * valuePtr , uint8_t arg )
155
179
{
156
- return 0 ;
180
+ uint8_t v = * valuePtr ;
181
+ * valuePtr ^= arg ;
182
+ return v ;
157
183
}
158
184
159
185
uint16_t core_util_atomic_fetch_xor_u16 (volatile uint16_t * valuePtr , uint16_t arg )
160
186
{
161
- return 0 ;
187
+ uint16_t v = * valuePtr ;
188
+ * valuePtr ^= arg ;
189
+ return v ;
162
190
}
163
191
164
192
uint32_t core_util_atomic_fetch_xor_u32 (volatile uint32_t * valuePtr , uint32_t arg )
165
193
{
166
- return 0 ;
194
+ uint32_t v = * valuePtr ;
195
+ * valuePtr ^= arg ;
196
+ return v ;
167
197
}
168
198
169
199
0 commit comments