summaryrefslogtreecommitdiffstats
path: root/src/kernel/spinlock.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-06-09 14:12:01 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-06-09 14:12:01 -0500
commite7a6ae9cc5b84abe63c7439005656ecc4beda8c1 (patch)
treee50ad79598edeccd4b2e513f146896d2d60f0c82 /src/kernel/spinlock.C
parentcbbd9e5b225e743ee3b4688ac6a3b69a9876926a (diff)
downloadtalos-hostboot-e7a6ae9cc5b84abe63c7439005656ecc4beda8c1.tar.gz
talos-hostboot-e7a6ae9cc5b84abe63c7439005656ecc4beda8c1.zip
Kernel spinlock support.
Diffstat (limited to 'src/kernel/spinlock.C')
-rw-r--r--src/kernel/spinlock.C12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/kernel/spinlock.C b/src/kernel/spinlock.C
new file mode 100644
index 000000000..bfada05c4
--- /dev/null
+++ b/src/kernel/spinlock.C
@@ -0,0 +1,12 @@
+#include <kernel/spinlock.H>
+
+void Spinlock::lock()
+{
+ uint64_t reservation = __sync_fetch_and_add(&iv_reserve, 1);
+ while(iv_ready != reservation);
+}
+
+void Spinlock::unlock()
+{
+ __sync_add_and_fetch(&iv_ready, 1);
+}
OpenPOWER on IntegriCloud