summaryrefslogtreecommitdiff
path: root/lib/locks
diff options
context:
space:
mode:
authorSoby Mathew <soby.mathew@arm.com>2014-11-18 10:45:04 +0000
committerDan Handley <dan.handley@arm.com>2015-01-22 10:57:43 +0000
commitd4f4ad90f9fe754bc098bbb392ba780e5a1bb0b3 (patch)
treeba69d4d05fd9a021a2a4d0b4d09a54e7f5337ec7 /lib/locks
parent1c73ffbd4cf8f62de529ad381d83fb79b76042de (diff)
Remove the wfe() for bounded wait in bakery_lock
This patch is an optimization in the bakery_lock_get() function which removes the wfe() when waiting for other contenders to choose their ticket i.e when their `entering` flag is set. Since the time taken to execute bakery_get_ticket() by other contenders is bounded, this wait is a bounded time wait. Hence the removal of wfe() and the corresponding sev() and dsb() in bakery_get_ticket() may result in better time performance during lock acquisition. Change-Id: I141bb21294226b54cb6e89e7cac0175c553afd8d
Diffstat (limited to 'lib/locks')
-rw-r--r--lib/locks/bakery/bakery_lock.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/locks/bakery/bakery_lock.c b/lib/locks/bakery/bakery_lock.c
index 7e71dec0..6bdc35a5 100644
--- a/lib/locks/bakery/bakery_lock.c
+++ b/lib/locks/bakery/bakery_lock.c
@@ -107,8 +107,6 @@ static unsigned int bakery_get_ticket(bakery_lock_t *bakery, unsigned int me)
++my_ticket;
bakery->number[me] = my_ticket;
bakery->entering[me] = 0;
- dsb();
- sev();
return my_ticket;
}
@@ -151,7 +149,7 @@ void bakery_lock_get(bakery_lock_t *bakery)
/* Wait for the contender to get their ticket */
while (bakery->entering[they])
- wfe();
+ ;
/*
* If the other party is a contender, they'll have non-zero