1 cat <<EOF
2 static __always_inline bool
3 arch_${atomic}_inc_unless_negative(${atomic}_t *v)
4 {
5 	${int} c = arch_${atomic}_read(v);
6 
7 	do {
8 		if (unlikely(c < 0))
9 			return false;
10 	} while (!arch_${atomic}_try_cmpxchg(v, &c, c + 1));
11 
12 	return true;
13 }
14 EOF
15