diff --git a/src/atomic.h b/src/atomic.h index cb73c9f26ab87a9200d4876de6ac13460a363515..69df59e9fba965422eaf9a3b3de9d28ab9f09dad 100644 --- a/src/atomic.h +++ b/src/atomic.h @@ -39,13 +39,16 @@ * * This is a text-book implementation based on an atomic CAS. * + * We create a temporary union to cope with the int-only atomic CAS + * and the floating-point min that we want. + * * @param address The address to update. * @param y The value to update the address with. */ __attribute__((always_inline)) INLINE static void atomic_min_f( - volatile float* address, float y) { + volatile float *const address, const float y) { - int* int_ptr = (int*)address; + int *const int_ptr = (int *)address; typedef union { float as_float; @@ -67,13 +70,16 @@ __attribute__((always_inline)) INLINE static void atomic_min_f( * * This is a text-book implementation based on an atomic CAS. * + * We create a temporary union to cope with the int-only atomic CAS + * and the floating-point max that we want. + * * @param address The address to update. * @param y The value to update the address with. */ __attribute__((always_inline)) INLINE static void atomic_max_f( - volatile float* address, float y) { + volatile float *const address, const float y) { - int* int_ptr = (int*)address; + int *const int_ptr = (int *)address; typedef union { float as_float; @@ -95,13 +101,16 @@ __attribute__((always_inline)) INLINE static void atomic_max_f( * * This is a text-book implementation based on an atomic CAS. * + * We create a temporary union to cope with the int-only atomic CAS + * and the floating-point add that we want. + * * @param address The address to update. * @param y The value to update the address with. */ __attribute__((always_inline)) INLINE static void atomic_add_f( - volatile float* address, float y) { + volatile float *const address, const float y) { - int* int_ptr = (int*)address; + int *const int_ptr = (int *)address; typedef union { float as_float;