b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | cat <<EOF |
2 | static inline bool | ||||
3 | ${atomic}_dec_unless_positive(${atomic}_t *v) | ||||
4 | { | ||||
5 | ${int} c = ${atomic}_read(v); | ||||
6 | |||||
7 | do { | ||||
8 | if (unlikely(c > 0)) | ||||
9 | return false; | ||||
10 | } while (!${atomic}_try_cmpxchg(v, &c, c - 1)); | ||||
11 | |||||
12 | return true; | ||||
13 | } | ||||
14 | EOF |