summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/68020
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-09-26 22:24:31 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-09-26 22:24:31 +0200
commitcdc2c30e99f2fb3d65dfbc8ef73efd433a3f1966 (patch)
tree5c3d5a6a42311f09444ca34d09bfebc78e08f5a3 /sys/src/ape/lib/ap/68020
parentb4cdfc6c5517390d6be05b2c01e56bacc9e85ea8 (diff)
reverting semaphore lock changes from sources (r41ccd6d221da, rb28756e5ba29)
semaphore locks have much higher overhead than initially presented in the "Semaphores in Plan9" paper. until the reason for it has been found out i will revert the changes.
Diffstat (limited to 'sys/src/ape/lib/ap/68020')
-rw-r--r--sys/src/ape/lib/ap/68020/lock.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/src/ape/lib/ap/68020/lock.c b/sys/src/ape/lib/ap/68020/lock.c
index 5b1d72c46..91c0ba233 100644
--- a/sys/src/ape/lib/ap/68020/lock.c
+++ b/sys/src/ape/lib/ap/68020/lock.c
@@ -2,17 +2,19 @@
#include "../plan9/sys9.h"
#include <lock.h>
+int tas(int*);
+
void
lock(Lock *lk)
{
- while(tas((int*)&lk->key))
+ while(tas(&lk->val))
_SLEEP(0);
}
int
canlock(Lock *lk)
{
- if(tas((int*)&lk->key))
+ if(tas(&lk->val))
return 0;
return 1;
}
@@ -20,5 +22,5 @@ canlock(Lock *lk)
void
unlock(Lock *lk)
{
- lk->key = 0;
+ lk->val = 0;
}