rt: Introduce cpu_chill()

Retry loops on RT might loop forever when the modifying side was
preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill()
defaults to cpu_relax() for non RT. On RT it puts the looping task to
sleep for a tick so the preempted task can make progress.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
This commit is contained in:
Thomas Gleixner 2012-03-07 20:51:03 +01:00 committed by Alibek Omarov
parent 2d535af0db
commit b1a75a3071
1 changed files with 6 additions and 0 deletions

View File

@ -52,4 +52,10 @@ static inline void ssleep(unsigned int seconds)
msleep(seconds * 1000);
}
#ifdef CONFIG_PREEMPT_RT_FULL
# define cpu_chill() msleep(1)
#else
# define cpu_chill() cpu_relax()
#endif
#endif /* defined(_LINUX_DELAY_H) */