fetch_add_unless 156 B

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