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