Skip to content

Commit 393ca3e

Browse files
committed
mbed_atomic templates: add noexcept
Add noexcept for consistency with upcoming Atomic.h
1 parent 084c740 commit 393ca3e

File tree

2 files changed

+77
-77
lines changed

2 files changed

+77
-77
lines changed

platform/internal/mbed_atomic_impl.h

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1089,49 +1089,49 @@ DO_MBED_LOCKED_CAS_ORDERINGS(compare_exchange_weak)
10891089
*/
10901090
#define DO_MBED_ATOMIC_LOAD_TEMPLATE(T, fn_suffix) \
10911091
template<> \
1092-
inline T core_util_atomic_load(const volatile T *valuePtr) \
1092+
inline T core_util_atomic_load(const volatile T *valuePtr) noexcept \
10931093
{ \
10941094
return core_util_atomic_load_##fn_suffix(valuePtr); \
10951095
} \
10961096
\
10971097
template<> \
1098-
inline T core_util_atomic_load(const T *valuePtr) \
1098+
inline T core_util_atomic_load(const T *valuePtr) noexcept \
10991099
{ \
11001100
return core_util_atomic_load_##fn_suffix(valuePtr); \
11011101
} \
11021102
\
11031103
template<> \
1104-
inline T core_util_atomic_load_explicit(const volatile T *valuePtr, mbed_memory_order order) \
1104+
inline T core_util_atomic_load_explicit(const volatile T *valuePtr, mbed_memory_order order) noexcept \
11051105
{ \
11061106
return core_util_atomic_load_explicit_##fn_suffix(valuePtr, order); \
11071107
} \
11081108
\
11091109
template<> \
1110-
inline T core_util_atomic_load_explicit(const T *valuePtr, mbed_memory_order order) \
1110+
inline T core_util_atomic_load_explicit(const T *valuePtr, mbed_memory_order order) noexcept \
11111111
{ \
11121112
return core_util_atomic_load_explicit_##fn_suffix(valuePtr, order); \
11131113
}
11141114

11151115
template<typename T>
1116-
inline T *core_util_atomic_load(T *const volatile *valuePtr)
1116+
inline T *core_util_atomic_load(T *const volatile *valuePtr) noexcept
11171117
{
11181118
return (T *) core_util_atomic_load_ptr((void *const volatile *) valuePtr);
11191119
}
11201120

11211121
template<typename T>
1122-
inline T *core_util_atomic_load(T *const *valuePtr)
1122+
inline T *core_util_atomic_load(T *const *valuePtr) noexcept
11231123
{
11241124
return (T *) core_util_atomic_load_ptr((void *const *) valuePtr);
11251125
}
11261126

11271127
template<typename T>
1128-
inline T *core_util_atomic_load_explicit(T *const volatile *valuePtr, mbed_memory_order order)
1128+
inline T *core_util_atomic_load_explicit(T *const volatile *valuePtr, mbed_memory_order order) noexcept
11291129
{
11301130
return (T *) core_util_atomic_load_explicit_ptr((void *const volatile *) valuePtr, order);
11311131
}
11321132

11331133
template<typename T>
1134-
inline T *core_util_atomic_load_explicit(T *const *valuePtr, mbed_memory_order order)
1134+
inline T *core_util_atomic_load_explicit(T *const *valuePtr, mbed_memory_order order) noexcept
11351135
{
11361136
return (T *) core_util_atomic_load_explicit_ptr((void *const *) valuePtr, order);
11371137
}
@@ -1148,49 +1148,49 @@ DO_MBED_ATOMIC_LOAD_TEMPLATE(bool, bool)
11481148

11491149
#define DO_MBED_ATOMIC_STORE_TEMPLATE(T, fn_suffix) \
11501150
template<> \
1151-
inline void core_util_atomic_store(volatile T *valuePtr, T val) \
1151+
inline void core_util_atomic_store(volatile T *valuePtr, T val) noexcept \
11521152
{ \
11531153
core_util_atomic_store_##fn_suffix(valuePtr, val); \
11541154
} \
11551155
\
11561156
template<> \
1157-
inline void core_util_atomic_store(T *valuePtr, T val) \
1157+
inline void core_util_atomic_store(T *valuePtr, T val) noexcept \
11581158
{ \
11591159
core_util_atomic_store_##fn_suffix(valuePtr, val); \
11601160
} \
11611161
\
11621162
template<> \
1163-
inline void core_util_atomic_store_explicit(volatile T *valuePtr, T val, mbed_memory_order order) \
1163+
inline void core_util_atomic_store_explicit(volatile T *valuePtr, T val, mbed_memory_order order) noexcept \
11641164
{ \
11651165
core_util_atomic_store_explicit_##fn_suffix(valuePtr, val, order); \
11661166
} \
11671167
\
11681168
template<> \
1169-
inline void core_util_atomic_store_explicit(T *valuePtr, T val, mbed_memory_order order) \
1169+
inline void core_util_atomic_store_explicit(T *valuePtr, T val, mbed_memory_order order) noexcept \
11701170
{ \
11711171
core_util_atomic_store_explicit_##fn_suffix(valuePtr, val, order); \
11721172
}
11731173

11741174
template<typename T>
1175-
inline void core_util_atomic_store(T *volatile *valuePtr, T *val)
1175+
inline void core_util_atomic_store(T *volatile *valuePtr, T *val) noexcept
11761176
{
11771177
core_util_atomic_store_ptr((void *volatile *) valuePtr, val);
11781178
}
11791179

11801180
template<typename T>
1181-
inline void core_util_atomic_store(T **valuePtr, T *val)
1181+
inline void core_util_atomic_store(T **valuePtr, T *val) noexcept
11821182
{
11831183
core_util_atomic_store_ptr((void **) valuePtr, val);
11841184
}
11851185

11861186
template<typename T>
1187-
inline void core_util_atomic_store_explicit(T *volatile *valuePtr, T *val, mbed_memory_order order)
1187+
inline void core_util_atomic_store_explicit(T *volatile *valuePtr, T *val, mbed_memory_order order) noexcept
11881188
{
11891189
core_util_atomic_store_ptr((void *volatile *) valuePtr, val, order);
11901190
}
11911191

11921192
template<typename T>
1193-
inline void core_util_atomic_store_explicit(T **valuePtr, T *val, mbed_memory_order order)
1193+
inline void core_util_atomic_store_explicit(T **valuePtr, T *val, mbed_memory_order order) noexcept
11941194
{
11951195
core_util_atomic_store_ptr((void **) valuePtr, val, order);
11961196
}
@@ -1207,19 +1207,19 @@ DO_MBED_ATOMIC_STORE_TEMPLATE(bool, bool)
12071207

12081208
#define DO_MBED_ATOMIC_CAS_TEMPLATE(tname, fname, T, fn_suffix) \
12091209
template<> inline \
1210-
bool core_util_atomic_##tname(volatile T *ptr, T *expectedCurrentValue, T desiredValue) \
1210+
bool core_util_atomic_##tname(volatile T *ptr, T *expectedCurrentValue, T desiredValue) noexcept \
12111211
{ \
12121212
return core_util_atomic_##fname##_##fn_suffix(ptr, expectedCurrentValue, desiredValue); \
12131213
}
12141214

12151215
template<typename T>
1216-
inline bool core_util_atomic_compare_exchange_strong(T *volatile *ptr, T **expectedCurrentValue, T *desiredValue)
1216+
inline bool core_util_atomic_compare_exchange_strong(T *volatile *ptr, T **expectedCurrentValue, T *desiredValue) noexcept
12171217
{
12181218
return core_util_atomic_cas_ptr((void *volatile *) ptr, (void **) expectedCurrentValue, desiredValue);
12191219
}
12201220

12211221
template<typename T>
1222-
inline bool core_util_atomic_compare_exchange_weak(T *volatile *ptr, T **expectedCurrentValue, T *desiredValue)
1222+
inline bool core_util_atomic_compare_exchange_weak(T *volatile *ptr, T **expectedCurrentValue, T *desiredValue) noexcept
12231223
{
12241224
return core_util_atomic_compare_exchange_weak_ptr((void *volatile *) ptr, (void **) expectedCurrentValue, desiredValue);
12251225
}
@@ -1240,63 +1240,63 @@ DO_MBED_ATOMIC_CAS_TEMPLATES(compare_exchange_weak, compare_exchange_weak)
12401240

12411241
#define DO_MBED_ATOMIC_OP_TEMPLATE(name, T, fn_suffix) \
12421242
template<> \
1243-
inline T core_util_atomic_##name(volatile T *valuePtr, T arg) \
1243+
inline T core_util_atomic_##name(volatile T *valuePtr, T arg) noexcept \
12441244
{ \
12451245
return core_util_atomic_##name##_##fn_suffix(valuePtr, arg); \
12461246
} \
12471247
\
12481248
template<> \
12491249
inline T core_util_atomic_##name##_explicit(volatile T *valuePtr, T arg, \
1250-
mbed_memory_order order) \
1250+
mbed_memory_order order) noexcept \
12511251
{ \
12521252
return core_util_atomic_##name##_explicit_##fn_suffix(valuePtr, arg, order); \
12531253
}
12541254

12551255

12561256
template<>
1257-
inline bool core_util_atomic_exchange(volatile bool *valuePtr, bool arg)
1257+
inline bool core_util_atomic_exchange(volatile bool *valuePtr, bool arg) noexcept
12581258
{
12591259
return core_util_atomic_exchange_bool(valuePtr, arg);
12601260
}
12611261

12621262
template<>
1263-
inline bool core_util_atomic_exchange_explicit(volatile bool *valuePtr, bool arg, mbed_memory_order order)
1263+
inline bool core_util_atomic_exchange_explicit(volatile bool *valuePtr, bool arg, mbed_memory_order order) noexcept
12641264
{
12651265
return core_util_atomic_exchange_explicit_bool(valuePtr, arg, order);
12661266
}
12671267

12681268
template<typename T>
1269-
inline T *core_util_atomic_exchange(T *volatile *valuePtr, T *arg)
1269+
inline T *core_util_atomic_exchange(T *volatile *valuePtr, T *arg) noexcept
12701270
{
12711271
return (T *) core_util_atomic_exchange_ptr((void *volatile *) valuePtr, arg);
12721272
}
12731273

12741274
template<typename T>
1275-
inline T *core_util_atomic_exchange_explicit(T *volatile *valuePtr, T *arg, mbed_memory_order order)
1275+
inline T *core_util_atomic_exchange_explicit(T *volatile *valuePtr, T *arg, mbed_memory_order order) noexcept
12761276
{
12771277
return (T *) core_util_atomic_fetch_add_explicit_ptr((void *volatile *) valuePtr, arg, order);
12781278
}
12791279

12801280
template<typename T>
1281-
inline T *core_util_atomic_fetch_add(T *volatile *valuePtr, ptrdiff_t arg)
1281+
inline T *core_util_atomic_fetch_add(T *volatile *valuePtr, ptrdiff_t arg) noexcept
12821282
{
12831283
return (T *) core_util_atomic_fetch_add_ptr((void *volatile *) valuePtr, arg * sizeof(T));
12841284
}
12851285

12861286
template<typename T>
1287-
inline T *core_util_atomic_fetch_add_explicit(T *volatile *valuePtr, ptrdiff_t arg, mbed_memory_order order)
1287+
inline T *core_util_atomic_fetch_add_explicit(T *volatile *valuePtr, ptrdiff_t arg, mbed_memory_order order) noexcept
12881288
{
12891289
return (T *) core_util_atomic_fetch_add_explicit_ptr((void *volatile *) valuePtr, arg * sizeof(T), order);
12901290
}
12911291

12921292
template<typename T>
1293-
inline T *core_util_atomic_fetch_sub(T *volatile *valuePtr, ptrdiff_t arg)
1293+
inline T *core_util_atomic_fetch_sub(T *volatile *valuePtr, ptrdiff_t arg) noexcept
12941294
{
12951295
return (T *) core_util_atomic_fetch_sub_ptr((void *volatile *) valuePtr, arg * sizeof(T));
12961296
}
12971297

12981298
template<typename T>
1299-
inline T *core_util_atomic_fetch_sub_explicit(T *volatile *valuePtr, ptrdiff_t arg, mbed_memory_order order)
1299+
inline T *core_util_atomic_fetch_sub_explicit(T *volatile *valuePtr, ptrdiff_t arg, mbed_memory_order order) noexcept
13001300
{
13011301
return (T *) core_util_atomic_fetch_sub_explicit_ptr((void *volatile *) valuePtr, arg * sizeof(T), order);
13021302
}
@@ -1316,14 +1316,14 @@ inline T *core_util_atomic_fetch_sub_explicit(T *volatile *valuePtr, ptrdiff_t a
13161316

13171317
#define DO_MBED_ATOMIC_MANUAL_PRE_OP_TEMPLATE(name, T, fn_suffix, postname, OP) \
13181318
template<> \
1319-
inline T core_util_atomic_##name(volatile T *valuePtr, T arg) \
1319+
inline T core_util_atomic_##name(volatile T *valuePtr, T arg) noexcept \
13201320
{ \
13211321
return core_util_atomic_##postname##_##fn_suffix(valuePtr, arg) OP; \
13221322
} \
13231323
\
13241324
template<> \
13251325
inline T core_util_atomic_##name##_explicit(volatile T *valuePtr, T arg, \
1326-
mbed_memory_order order) \
1326+
mbed_memory_order order) noexcept \
13271327
{ \
13281328
return core_util_atomic_##postname##_explicit_##fn_suffix(valuePtr, arg, order) OP; \
13291329
}
@@ -1344,16 +1344,16 @@ namespace impl {
13441344
// Use custom assembler forms for pre-ops where available, else construct from post-ops
13451345
#if MBED_EXCLUSIVE_ACCESS
13461346
#define DO_MBED_ATOMIC_PRE_OP_TEMPLATES(name, postname, OP) \
1347-
template<typename T> T core_util_atomic_##name(volatile T *valuePtr, T arg); \
1348-
template<typename T> T core_util_atomic_##name##_explicit(volatile T *valuePtr, T arg, mbed_memory_order order); \
1347+
template<typename T> T core_util_atomic_##name(volatile T *valuePtr, T arg) noexcept; \
1348+
template<typename T> T core_util_atomic_##name##_explicit(volatile T *valuePtr, T arg, mbed_memory_order order) noexcept; \
13491349
DO_MBED_ATOMIC_OP_TEMPLATE(name, uint8_t, u8) \
13501350
DO_MBED_ATOMIC_OP_TEMPLATE(name, uint16_t, u16) \
13511351
DO_MBED_ATOMIC_OP_TEMPLATE(name, uint32_t, u32) \
13521352
DO_MBED_ATOMIC_MANUAL_PRE_OP_TEMPLATE(name, uint64_t, u64, postname, OP)
13531353
#else
13541354
#define DO_MBED_ATOMIC_PRE_OP_TEMPLATES(name, postname, OP) \
1355-
template<typename T> T core_util_atomic_##name(volatile T *valuePtr, T arg); \
1356-
template<typename T> T core_util_atomic_##name##_explicit(volatile T *valuePtr, T arg, mbed_memory_order order); \
1355+
template<typename T> T core_util_atomic_##name(volatile T *valuePtr, T arg) noexcept; \
1356+
template<typename T> T core_util_atomic_##name##_explicit(volatile T *valuePtr, T arg, mbed_memory_order order) noexcept; \
13571357
DO_MBED_ATOMIC_MANUAL_PRE_OP_TEMPLATE(name, uint8_t, u8, postname, OP) \
13581358
DO_MBED_ATOMIC_MANUAL_PRE_OP_TEMPLATE(name, uint16_t, u16, postname, OP) \
13591359
DO_MBED_ATOMIC_MANUAL_PRE_OP_TEMPLATE(name, uint32_t, u32, postname, OP) \

0 commit comments

Comments
 (0)