summaryrefslogtreecommitdiffstats
path: root/src/kernel/barrier.C
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2011-09-26 13:36:33 -0500
committerDouglas R. Gilbert <dgilbert@us.ibm.com>2011-10-25 11:16:20 -0500
commit5ab488739184f2b2649193e3f9da695ee334d04f (patch)
tree3d47e74b8dd290598527988adccff0ff57c72dc0 /src/kernel/barrier.C
parentd127ad9d985ffd7a42dba798bee66654242c4fe6 (diff)
downloadtalos-hostboot-5ab488739184f2b2649193e3f9da695ee334d04f.tar.gz
talos-hostboot-5ab488739184f2b2649193e3f9da695ee334d04f.zip
new HEAP manager to reduce fragmentation
Change-Id: Ibe725a43e6366d9113ec99df1cc6aafa7bbb770e Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/431 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Diffstat (limited to 'src/kernel/barrier.C')
-rw-r--r--src/kernel/barrier.C42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/kernel/barrier.C b/src/kernel/barrier.C
new file mode 100644
index 000000000..a5dadc63a
--- /dev/null
+++ b/src/kernel/barrier.C
@@ -0,0 +1,42 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/kernel/barrier.C $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#include <kernel/barrier.H>
+#include <arch/ppc.H>
+
+void Barrier::wait()
+{
+ iv_spinlock.lock();
+ --iv_missing;
+ if(iv_missing > 0)
+ {
+ size_t l_event = iv_event;
+ iv_spinlock.unlock();
+ while(iv_event == l_event);
+ }
+ else
+ {
+ iv_missing = iv_count;
+ ++iv_event;
+ iv_spinlock.unlock();
+ }
+}
OpenPOWER on IntegriCloud