projects/linux·blob master · refs

10 lines · 164 B

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