atomic.h: comment on use of atomic_read/set
Add some notes on the use of the relaxed atomic access helpers and their importance for defined behaviour in C11's multi-threaded memory model. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20160930213106.20186-3-alex.bennee@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									23ea7f5794
								
							
						
					
					
						commit
						e653bc6b0f
					
				@ -92,6 +92,12 @@
 | 
				
			|||||||
/* Weak atomic operations prevent the compiler moving other
 | 
					/* Weak atomic operations prevent the compiler moving other
 | 
				
			||||||
 * loads/stores past the atomic operation load/store. However there is
 | 
					 * loads/stores past the atomic operation load/store. However there is
 | 
				
			||||||
 * no explicit memory barrier for the processor.
 | 
					 * no explicit memory barrier for the processor.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The C11 memory model says that variables that are accessed from
 | 
				
			||||||
 | 
					 * different threads should at least be done with __ATOMIC_RELAXED
 | 
				
			||||||
 | 
					 * primitives or the result is undefined. Generally this has little to
 | 
				
			||||||
 | 
					 * no effect on the generated code but not using the atomic primitives
 | 
				
			||||||
 | 
					 * will get flagged by sanitizers as a violation.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define atomic_read(ptr)                              \
 | 
					#define atomic_read(ptr)                              \
 | 
				
			||||||
    ({                                                \
 | 
					    ({                                                \
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user