forked from mirrors/linux
		
	 7928260539
			
		
	
	
		7928260539
		
	
	
	
	
		
			
			spin_cpu_yield is unused, therefore remove it. Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /* Misc low level processor primitives */
 | |
| #ifndef _LINUX_PROCESSOR_H
 | |
| #define _LINUX_PROCESSOR_H
 | |
| 
 | |
| #include <asm/processor.h>
 | |
| 
 | |
| /*
 | |
|  * spin_begin is used before beginning a busy-wait loop, and must be paired
 | |
|  * with spin_end when the loop is exited. spin_cpu_relax must be called
 | |
|  * within the loop.
 | |
|  *
 | |
|  * The loop body should be as small and fast as possible, on the order of
 | |
|  * tens of instructions/cycles as a guide. It should and avoid calling
 | |
|  * cpu_relax, or any "spin" or sleep type of primitive including nested uses
 | |
|  * of these primitives. It should not lock or take any other resource.
 | |
|  * Violations of these guidelies will not cause a bug, but may cause sub
 | |
|  * optimal performance.
 | |
|  *
 | |
|  * These loops are optimized to be used where wait times are expected to be
 | |
|  * less than the cost of a context switch (and associated overhead).
 | |
|  *
 | |
|  * Detection of resource owner and decision to spin or sleep or guest-yield
 | |
|  * (e.g., spin lock holder vcpu preempted, or mutex owner not on CPU) can be
 | |
|  * tested within the loop body.
 | |
|  */
 | |
| #ifndef spin_begin
 | |
| #define spin_begin()
 | |
| #endif
 | |
| 
 | |
| #ifndef spin_cpu_relax
 | |
| #define spin_cpu_relax() cpu_relax()
 | |
| #endif
 | |
| 
 | |
| #ifndef spin_end
 | |
| #define spin_end()
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * spin_until_cond can be used to wait for a condition to become true. It
 | |
|  * may be expected that the first iteration will true in the common case
 | |
|  * (no spinning), so that callers should not require a first "likely" test
 | |
|  * for the uncontended case before using this primitive.
 | |
|  *
 | |
|  * Usage and implementation guidelines are the same as for the spin_begin
 | |
|  * primitives, above.
 | |
|  */
 | |
| #ifndef spin_until_cond
 | |
| #define spin_until_cond(cond)					\
 | |
| do {								\
 | |
| 	if (unlikely(!(cond))) {				\
 | |
| 		spin_begin();					\
 | |
| 		do {						\
 | |
| 			spin_cpu_relax();			\
 | |
| 		} while (!(cond));				\
 | |
| 		spin_end();					\
 | |
| 	}							\
 | |
| } while (0)
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif /* _LINUX_PROCESSOR_H */
 |