cat <<EOF static __always_inline ${ret} ${arch}${atomic}_dec_if_positive(${atomic}_t *v) { <------>${int} dec, c = ${arch}${atomic}_read(v); <------>do { <------><------>dec = c - 1; <------><------>if (unlikely(dec < 0)) <------><------><------>break; <------>} while (!${arch}${atomic}_try_cmpxchg(v, &c, dec)); <------>return dec; } EOF