From: Alexei Starovoitov alexei.starovoitov@gmail.com Date: Wed, 11 Nov 2015 10:11:33 -0800
bpf_xadd was never meant to be __sync_fetch_and_add equivalent. From the day one it meant to be atomic_add() as kernel does it.
+1
I did piggy back on __sync in the llvm backend because it was the quick and dirty way to move forward. In retrospect I should have introduced a clean intrinstic for that instead, but it's not too late to do it now. user space we can change at any time unlike kernel.
+1