162306a36Sopenharmony_cicat <<EOF 262306a36Sopenharmony_ci ${int} dec, c = raw_${atomic}_read(v); 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci do { 562306a36Sopenharmony_ci dec = c - 1; 662306a36Sopenharmony_ci if (unlikely(dec < 0)) 762306a36Sopenharmony_ci break; 862306a36Sopenharmony_ci } while (!raw_${atomic}_try_cmpxchg(v, &c, dec)); 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci return dec; 1162306a36Sopenharmony_ciEOF 12