@@ -73,33 +73,34 @@ void utils_atomic_load_acquire(void *ptr, void *dest) {
73
73
* (long long * )dest = InterlockedOr64Acquire ((long long volatile * )ptr , 0 );
74
74
}
75
75
76
- void utils_atomic_store_release (void * ptr , long long desired ) {
76
+ void utils_atomic_store_release (void * ptr , void * desired ) {
77
77
ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
78
- InterlockedExchange64 ((long long volatile * )ptr , desired );
78
+ InterlockedExchange64 ((long long volatile * )ptr , ( long long ) desired );
79
79
}
80
80
81
- void utils_atomic_increment (void * ptr ) {
81
+ long long utils_atomic_increment (void * ptr ) {
82
82
ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
83
- InterlockedIncrement64 ((long long volatile * )ptr )
83
+ return InterlockedIncrement64 ((long long volatile * )ptr );
84
84
}
85
85
86
- void utils_atomic_decrement (void * ptr ) {
86
+ long long utils_atomic_decrement (void * ptr ) {
87
87
ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
88
- InterlockedDecrement64 ((long long volatile * )ptr )
88
+ return InterlockedDecrement64 ((long long volatile * )ptr );
89
89
}
90
90
91
- void utils_fetch_and_add64 (void * ptr , long long value ) {
91
+ long long utils_fetch_and_add64 (void * ptr , long long value ) {
92
92
ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
93
- InterlockedExchangeAdd64 ((long long volatile * )(ptr ), value );
93
+ // returns the val of *ptr before the operation
94
+ return InterlockedExchangeAdd64 ((long long volatile * )(ptr ), value );
94
95
}
95
96
96
97
// NOTE: windows version have different order of args
97
98
void utils_compare_exchange (void * ptr , void * desired , void * expected ) {
98
99
ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
99
100
ASSERT_IS_ALIGNED ((uintptr_t )desired , 64 );
100
101
ASSERT_IS_ALIGNED ((uintptr_t )expected , 64 );
101
- InterlockedCompareExchange64 ((long long volatile * )ptr , * expected ,
102
- * desired );
102
+ InterlockedCompareExchange64 ((long long volatile * )ptr ,
103
+ * ( long long * ) expected , * ( long long * ) desired );
103
104
}
104
105
105
106
static BOOL CALLBACK initOnceCb (PINIT_ONCE InitOnce , PVOID Parameter ,
0 commit comments