| 156 | } |
| 157 | |
| 158 | long long acl_atomic_int64_fetch_add(ACL_ATOMIC *self, long long n) |
| 159 | { |
| 160 | #ifndef HAS_ATOMIC |
| 161 | acl_pthread_mutex_lock(&self->lock); |
| 162 | long long v = *(long long *) self->value; |
| 163 | *((long long *) self->value) = v + n; |
| 164 | acl_pthread_mutex_unlock(&self->lock); |
| 165 | return v; |
| 166 | #elif defined(ACL_WINDOWS) |
| 167 | return InterlockedExchangeAdd64((volatile LONGLONG*) self->value, n); |
| 168 | #else |
| 169 | return (long long) __sync_fetch_and_add((long long *) self->value, n); |
| 170 | #endif |
| 171 | } |
| 172 | |
| 173 | long long acl_atomic_int64_add_fetch(ACL_ATOMIC *self, long long n) |
| 174 | { |
no test coverage detected
searching dependent graphs…