summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2011-06-17 12:35:39 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2011-06-24 11:30:00 -0500
commitd85739a1ad9e58339f5a58225da2ba5c7476c68b (patch)
treeae0acc7d51df7c742e8683ee100558ecb8766ff2 /src/lib
parent74d2fd5773f91470e17009b5da93f9d4a5cb1d5c (diff)
downloadtalos-hostboot-d85739a1ad9e58339f5a58225da2ba5c7476c68b.tar.gz
talos-hostboot-d85739a1ad9e58339f5a58225da2ba5c7476c68b.zip
Remove heap allocation of xscom mutex.
Since mutexes are simply a uint64 with a static initializer, the xscom mutex is now a instance variable directly in the cpu object. Remove unneeded mutex_create function and changed the behavior of mutex_destroy. Change-Id: If6e1d1bf0083c32ef9e7502d27678811bdaf7e1e Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/150 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/sync.C12
-rw-r--r--src/lib/syscall_mmio.C25
2 files changed, 4 insertions, 33 deletions
diff --git a/src/lib/sync.C b/src/lib/sync.C
index a70761eef..093c7f41e 100644
--- a/src/lib/sync.C
+++ b/src/lib/sync.C
@@ -66,15 +66,6 @@ void barrier_wait (barrier_t * i_barrier)
//-----------------------------------------------------------------------------
-mutex_t * mutex_create()
-{
- mutex_t * m = new mutex_t;
- mutex_init(m);
- return m;
-}
-
-//-----------------------------------------------------------------------------
-
void mutex_init(mutex_t * o_mutex)
{
o_mutex->iv_val = 0;
@@ -85,8 +76,7 @@ void mutex_init(mutex_t * o_mutex)
void mutex_destroy(mutex_t *& i_mutex)
{
- delete i_mutex;
- i_mutex = NULL;
+ i_mutex->iv_val = ~0;
return;
}
diff --git a/src/lib/syscall_mmio.C b/src/lib/syscall_mmio.C
index 91e4e113b..83a4f8f82 100644
--- a/src/lib/syscall_mmio.C
+++ b/src/lib/syscall_mmio.C
@@ -34,26 +34,7 @@ mutex_t * mmio_xscom_mutex()
// Ensure task is pinned.
assert(task->affinity_pinned);
-
- // Get mutex from cpu structure.
- mutex_t * mutex = task->cpu->xscom_mutex;
-
- // Create mutex if not created.
- if (NULL == mutex)
- {
- mutex = mutex_create();
-
- // Atomically update xscom_mutex with new mutex.
- if (!__sync_bool_compare_and_swap(&task->cpu->xscom_mutex, NULL, mutex))
- {
- // Failed, some other thread beat us to it.
-
- // Destroy mutex and get one created by other thread in the
- // meantime.
- mutex_destroy(mutex);
- mutex = task->cpu->xscom_mutex;
- }
- }
-
- return mutex;
+
+ // Return mutex from cpu structure.
+ return &task->cpu->xscom_mutex;
}
OpenPOWER on IntegriCloud