Add down_timeout and change ACPI to use it

ACPI currently emulates a timeout for semaphores with calls to
down_trylock and sleep.  This produces horrible behaviour in terms of
fairness and excessive wakeups.  Now that we have a unified semaphore
implementation, adding a real down_trylock is almost trivial.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
This commit is contained in:
Matthew Wilcox
2008-03-14 13:43:13 -04:00
committed by Matthew Wilcox
parent f06d968658
commit f1241c87a1
3 changed files with 62 additions and 75 deletions

View File

@@ -74,6 +74,12 @@ extern int __must_check down_killable(struct semaphore *sem);
*/
extern int __must_check down_trylock(struct semaphore *sem);
/*
* As down(), except this function will return -ETIME if it fails to
* acquire the semaphore within the specified number of jiffies.
*/
extern int __must_check down_timeout(struct semaphore *sem, long jiffies);
/*
* Release the semaphore. Unlike mutexes, up() may be called from any
* context and even by tasks which have never called down().