diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2011-06-17 12:35:39 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2011-06-24 11:30:00 -0500 |
commit | d85739a1ad9e58339f5a58225da2ba5c7476c68b (patch) | |
tree | ae0acc7d51df7c742e8683ee100558ecb8766ff2 /src/lib | |
parent | 74d2fd5773f91470e17009b5da93f9d4a5cb1d5c (diff) | |
download | talos-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.C | 12 | ||||
-rw-r--r-- | src/lib/syscall_mmio.C | 25 |
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; } |