diff options
author | Doug Gilbert <dgilbert@us.ibm.com> | 2011-09-26 13:36:33 -0500 |
---|---|---|
committer | Douglas R. Gilbert <dgilbert@us.ibm.com> | 2011-10-25 11:16:20 -0500 |
commit | 5ab488739184f2b2649193e3f9da695ee334d04f (patch) | |
tree | 3d47e74b8dd290598527988adccff0ff57c72dc0 /src/kernel/barrier.C | |
parent | d127ad9d985ffd7a42dba798bee66654242c4fe6 (diff) | |
download | blackbird-hostboot-5ab488739184f2b2649193e3f9da695ee334d04f.tar.gz blackbird-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.C | 42 |
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(); + } +} |