summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/amd64/lock.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-02-01 10:31:41 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-02-01 10:31:41 +0100
commited9e9f98e9cc502c72b27c68612e9e187ec11e10 (patch)
tree42901d0156503dadce4bf1f0b60e9ef850c3c5e0 /sys/src/ape/lib/ap/amd64/lock.c
parentd4fb753c9c90e0ca745a1b3708ad3ec4ca523e71 (diff)
libc and ape support for amd64
Diffstat (limited to 'sys/src/ape/lib/ap/amd64/lock.c')
-rw-r--r--sys/src/ape/lib/ap/amd64/lock.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/src/ape/lib/ap/amd64/lock.c b/sys/src/ape/lib/ap/amd64/lock.c
new file mode 100644
index 000000000..91c0ba233
--- /dev/null
+++ b/sys/src/ape/lib/ap/amd64/lock.c
@@ -0,0 +1,26 @@
+#define _LOCK_EXTENSION
+#include "../plan9/sys9.h"
+#include <lock.h>
+
+int tas(int*);
+
+void
+lock(Lock *lk)
+{
+ while(tas(&lk->val))
+ _SLEEP(0);
+}
+
+int
+canlock(Lock *lk)
+{
+ if(tas(&lk->val))
+ return 0;
+ return 1;
+}
+
+void
+unlock(Lock *lk)
+{
+ lk->val = 0;
+}