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