@@ -100,6 +100,24 @@ namespace tm_internal {
100100 interrupts ();
101101 return ret;
102102 }
103+
104+ /* *
105+ * Reads an atomic boolean value
106+ * @param pPtr the pointer to an atomic boolean value
107+ * @return the boolean value.
108+ */
109+ inline bool atomicReadBool (TmAtomicBool *pPtr) {
110+ return atomic_load (pPtr);
111+ }
112+
113+ /* *
114+ * Writes a boolean value atomically
115+ * @param pPtr the atomic ref
116+ * @param newVal the new value
117+ */
118+ inline void atomicWriteBool (TmAtomicBool *pPtr, bool newVal) {
119+ atomic_store (pPtr, newVal);
120+ }
103121#else
104122 typedef uint32_t TmAtomicBool; // to use CAS, the bool must be 32 bits wide
105123 inline bool atomicSwapBool (TmAtomicBool *ptr, bool expected, bool newValue) {
@@ -108,7 +126,7 @@ namespace tm_internal {
108126 uxPortCompareSet (ptr, exp32, &new32);
109127 return new32 == expected;
110128 }
111- # endif
129+
112130 /* *
113131 * Reads an atomic boolean value
114132 * @param pPtr the pointer to an atomic boolean value
@@ -126,6 +144,8 @@ namespace tm_internal {
126144 inline void atomicWriteBool (TmAtomicBool *pPtr, bool newVal) {
127145 *pPtr = newVal;
128146 }
147+ #endif
148+
129149
130150 /* *
131151 * Dereferences and returns the value of the pointer at ptr type. On mbed boards this is already an atomic operation and
0 commit comments