Linux Audio

Check our new training course

In-person Linux kernel drivers training

Jun 16-20, 2025
Register
Loading...
v4.10.11
 1#include <stdint.h>
 2
 3volatile uint64_t x;
 4
 5int main(int argc, char *argv[])
 6{
 7	uint64_t old, new = argc;
 8
 9	argv = argv;
10	do {
11		old = __sync_val_compare_and_swap(&x, 0, 0);
12	} while (!__sync_bool_compare_and_swap(&x, old, new));
13	return old == new;
14}
v4.6
 1#include <stdint.h>
 2
 3volatile uint64_t x;
 4
 5int main(int argc, char *argv[])
 6{
 7	uint64_t old, new = argc;
 8
 9	argv = argv;
10	do {
11		old = __sync_val_compare_and_swap(&x, 0, 0);
12	} while (!__sync_bool_compare_and_swap(&x, old, new));
13	return old == new;
14}