summaryrefslogtreecommitdiffstats
path: root/src/usr/testcore/lib/synctest.H
diff options
context:
space:
mode:
authorMatt Raybuck <mraybuc@us.ibm.com>2018-10-24 07:59:26 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-11-12 09:07:12 -0600
commit2e77a7fb14331b3d734aad3d500732dd51dcb32e (patch)
tree9fad75729721906f9001d86f0d479bb0052fd6e6 /src/usr/testcore/lib/synctest.H
parent87adeec286402eb648f14d274382fb8b84351467 (diff)
downloadtalos-hostboot-2e77a7fb14331b3d734aad3d500732dd51dcb32e.tar.gz
talos-hostboot-2e77a7fb14331b3d734aad3d500732dd51dcb32e.zip
Attribute support for recursive mutexes
Added a new recursive mutex attribute, new test cases, and initializers for recursive mutex attributes. Change-Id: I49e6bc4fc2fd84e5c46e5d4c5ec125270347bde5 RTC: 196793 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67939 Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com> Reviewed-by: Ilya Smirnov <ismirno@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/testcore/lib/synctest.H')
-rw-r--r--src/usr/testcore/lib/synctest.H15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/usr/testcore/lib/synctest.H b/src/usr/testcore/lib/synctest.H
index 2662f020d..ea71dac53 100644
--- a/src/usr/testcore/lib/synctest.H
+++ b/src/usr/testcore/lib/synctest.H
@@ -50,10 +50,11 @@ class SyncTest: public CxxTest::TestSuite
// deadlocks occur.
// Case 1: Single thread locks recursive mutex three times in a row.
{
- recursive_mutex_init(&mutex);
+ mutex_t recursive_mutex;
+ recursive_mutex_init(&recursive_mutex);
l_status = TASK_STATUS_EXITED_CLEAN;
- tid_t l_task1 = task_create(entry_func, this);
+ tid_t l_task1 = task_create(entry_func, &recursive_mutex);
if ((l_task1 != task_wait_tid(l_task1, &l_status, nullptr)) ||
(l_status == TASK_STATUS_EXITED_CLEAN))
@@ -66,11 +67,12 @@ class SyncTest: public CxxTest::TestSuite
// grab it (hangs) and then the first thread grabs it again
// without issue.
{
- recursive_mutex_init(&mutex);
+ mutex_t recursive_mutex;
+ recursive_mutex_init(&recursive_mutex);
l_status = TASK_STATUS_EXITED_CLEAN;
- tid_t l_task1 = task_create(entry_func, this);
- tid_t l_task2 = task_create(entry_func, this);
+ tid_t l_task1 = task_create(entry_func, &recursive_mutex);
+ tid_t l_task2 = task_create(entry_func, &recursive_mutex);
if ((l_task2 != task_wait_tid(l_task2, &l_status, nullptr)) ||
(l_status == TASK_STATUS_EXITED_CLEAN))
@@ -205,8 +207,7 @@ class SyncTest: public CxxTest::TestSuite
static void* entry_func(void* i_p)
{
- SyncTest* my = (SyncTest*) i_p;
- mutex_t* myMutex = &(my->mutex);
+ mutex_t* myMutex = (mutex_t*) i_p;
// Call the recursive function.
recursive_func(myMutex, 2);
OpenPOWER on IntegriCloud