projects/linux·blob master · refs

11 lines · 176 B

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