Skip to content

Commit 26726cc

Browse files
committed
Added proper usage of standard types for critical pointer functions
1 parent cf6f8e3 commit 26726cc

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

hal/api/critical.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#define __MBED_UTIL_CRITICAL_H__
2020

2121
#include <stdbool.h>
22+
#include <stdint.h>
23+
#include <stddef.h>
2224

2325
#ifdef __cplusplus
2426
extern "C" {
@@ -304,7 +306,7 @@ uint32_t core_util_atomic_incr_u32(uint32_t * valuePtr, uint32_t delta);
304306
* @param delta The amount being incremented.
305307
* @return The new incremented value.
306308
*/
307-
void *core_util_atomic_incr_ptr(void **valuePtr, unsigned delta);
309+
void *core_util_atomic_incr_ptr(void **valuePtr, ptrdiff_t delta);
308310

309311
/**
310312
* Atomic decrement.
@@ -336,7 +338,7 @@ uint32_t core_util_atomic_decr_u32(uint32_t * valuePtr, uint32_t delta);
336338
* @param delta The amount being decremented.
337339
* @return The new decremented value.
338340
*/
339-
void *core_util_atomic_decr_ptr(void **valuePtr, unsigned delta);
341+
void *core_util_atomic_decr_ptr(void **valuePtr, ptrdiff_t delta);
340342

341343
#ifdef __cplusplus
342344
} // extern "C"

hal/common/critical.c

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,11 @@
1515
* limitations under the License.
1616
*/
1717

18-
#define __STDC_LIMIT_MACROS
19-
#include <stdint.h>
20-
#include <stddef.h>
18+
#include "critical.h"
19+
2120
#include "cmsis.h"
2221
#include "mbed_assert.h"
2322

24-
// Module include
25-
#include "critical.h"
26-
2723
#define EXCLUSIVE_ACCESS (!defined (__CORTEX_M0) && !defined (__CORTEX_M0PLUS))
2824

2925
static volatile uint32_t interrupt_enable_counter = 0;
@@ -238,9 +234,9 @@ bool core_util_atomic_cas_u32(uint32_t *ptr, uint32_t *expectedCurrentValue, uin
238234

239235
bool core_util_atomic_cas_ptr(void **ptr, void **expectedCurrentValue, void *desiredValue) {
240236
return core_util_atomic_cas_u32(
241-
(unsigned *)ptr,
242-
(unsigned *)expectedCurrentValue,
243-
(unsigned)desiredValue);
237+
(uintptr_t *)ptr,
238+
(uintptr_t *)expectedCurrentValue,
239+
(uintptr_t)desiredValue);
244240
}
245241

246242
uint8_t core_util_atomic_incr_u8(uint8_t * valuePtr, uint8_t delta)
@@ -273,8 +269,8 @@ uint32_t core_util_atomic_incr_u32(uint32_t * valuePtr, uint32_t delta)
273269
return newValue;
274270
}
275271

276-
void *core_util_atomic_incr_ptr(void **valuePtr, unsigned delta) {
277-
return core_util_atomic_incr((unsigned)valuePtr, delta);
272+
void *core_util_atomic_incr_ptr(void **valuePtr, ptrdiff_t delta) {
273+
return core_util_atomic_incr((uintptr_t)valuePtr, (uintptr_t)delta);
278274
}
279275

280276

@@ -308,8 +304,8 @@ uint32_t core_util_atomic_decr_u32(uint32_t * valuePtr, uint32_t delta)
308304
return newValue;
309305
}
310306

311-
void *core_util_atomic_decr_ptr(void **valuePtr, unsigned delta) {
312-
return core_util_atomic_decr((unsigned)valuePtr, delta);
307+
void *core_util_atomic_decr_ptr(void **valuePtr, ptrdiff_t delta) {
308+
return core_util_atomic_decr((uintptr_t)valuePtr, (uintptr_t)delta);
313309
}
314310

315311
#endif

0 commit comments

Comments
 (0)