15 lines · 265 B · Text
RawDownload
cat <<EOFstatic __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