@@ -211,6 +211,12 @@ bool core_util_atomic_cas_u32(volatile uint32_t *ptr, uint32_t *expectedCurrentV
211
211
/** \copydoc core_util_atomic_cas_u8 */
212
212
bool core_util_atomic_cas_u64 (volatile uint64_t * ptr , uint64_t * expectedCurrentValue , uint64_t desiredValue );
213
213
214
+ /** \copydoc core_util_atomic_cas_u8 */
215
+ MBED_FORCEINLINE bool core_util_atomic_cas_bool (volatile bool * ptr , bool * expectedCurrentValue , bool desiredValue )
216
+ {
217
+ return (bool )core_util_atomic_cas_u8 ((volatile uint8_t * )ptr , (uint8_t * )expectedCurrentValue , desiredValue );
218
+ }
219
+
214
220
/** \copydoc core_util_atomic_cas_u8 */
215
221
bool core_util_atomic_cas_ptr (void * volatile * ptr , void * * expectedCurrentValue , void * desiredValue );
216
222
@@ -257,6 +263,18 @@ MBED_FORCEINLINE uint32_t core_util_atomic_load_u32(const volatile uint32_t *val
257
263
*/
258
264
uint64_t core_util_atomic_load_u64 (const volatile uint64_t * valuePtr );
259
265
266
+ /**
267
+ * Atomic load.
268
+ * @param valuePtr Target memory location.
269
+ * @return The loaded value.
270
+ */
271
+ MBED_FORCEINLINE bool core_util_atomic_load_bool (const volatile bool * valuePtr )
272
+ {
273
+ bool value = * valuePtr ;
274
+ MBED_BARRIER ();
275
+ return value ;
276
+ }
277
+
260
278
/**
261
279
* Atomic load.
262
280
* @param valuePtr Target memory location.
@@ -312,6 +330,18 @@ MBED_FORCEINLINE void core_util_atomic_store_u32(volatile uint32_t *valuePtr, ui
312
330
*/
313
331
void core_util_atomic_store_u64 (volatile uint64_t * valuePtr , uint64_t desiredValue );
314
332
333
+ /**
334
+ * Atomic store.
335
+ * @param valuePtr Target memory location.
336
+ * @param desiredValue The value to store.
337
+ */
338
+ MBED_FORCEINLINE void core_util_atomic_store_bool (volatile bool * valuePtr , bool desiredValue )
339
+ {
340
+ MBED_BARRIER ();
341
+ * valuePtr = desiredValue ;
342
+ MBED_BARRIER ();
343
+ }
344
+
315
345
/**
316
346
* Atomic store.
317
347
* @param valuePtr Target memory location.
0 commit comments