inc_unless_negative 164 B

12345678910
  1. cat <<EOF
  2. ${int} c = raw_${atomic}_read(v);
  3. do {
  4. if (unlikely(c < 0))
  5. return false;
  6. } while (!raw_${atomic}_try_cmpxchg(v, &c, c + 1));
  7. return true;
  8. EOF