dec_if_positive 259 B

123456789101112131415
  1. cat <<EOF
  2. static __always_inline ${ret}
  3. arch_${atomic}_dec_if_positive(${atomic}_t *v)
  4. {
  5. ${int} dec, c = arch_${atomic}_read(v);
  6. do {
  7. dec = c - 1;
  8. if (unlikely(dec < 0))
  9. break;
  10. } while (!arch_${atomic}_try_cmpxchg(v, &c, dec));
  11. return dec;
  12. }
  13. EOF