16 lines
		
	
	
		
			286 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
		
			286 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| #include <stdint.h>
 | |
| 
 | |
| volatile uint64_t x;
 | |
| 
 | |
| int main(int argc, char *argv[])
 | |
| {
 | |
| 	uint64_t old, new = argc;
 | |
| 
 | |
| 	(void)argv;
 | |
| 	do {
 | |
| 		old = __sync_val_compare_and_swap(&x, 0, 0);
 | |
| 	} while (!__sync_bool_compare_and_swap(&x, old, new));
 | |
| 	return old == new;
 | |
| }
 |