dec_if_positive 176 B

1234567891011
  1. cat <<EOF
  2. ${int} dec, c = raw_${atomic}_read(v);
  3. do {
  4. dec = c - 1;
  5. if (unlikely(dec < 0))
  6. break;
  7. } while (!raw_${atomic}_try_cmpxchg(v, &c, dec));
  8. return dec;
  9. EOF