summaryrefslogtreecommitdiffstats
path: root/src/usr/cxxtest
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2012-03-05 11:42:35 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-03-05 14:23:53 -0600
commit8f4db0860f8b838ce84b40a32754923b9ad7b9fa (patch)
tree125fdff8e9eecee33525b8105268b3104c8136c8 /src/usr/cxxtest
parent5938374fc2ce5dab6ddfa4ed8f5c112e421f5619 (diff)
downloadtalos-hostboot-8f4db0860f8b838ce84b40a32754923b9ad7b9fa.tar.gz
talos-hostboot-8f4db0860f8b838ce84b40a32754923b9ad7b9fa.zip
Convert CxxTest to use join.
Change-Id: I404bfbbe179c0fea7bba1deab731f639a5dd20be Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/720 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Mark W. Wenning <wenning@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/cxxtest')
-rw-r--r--src/usr/cxxtest/cxxtestexec.C23
-rwxr-xr-xsrc/usr/cxxtest/cxxtestgen.pl19
2 files changed, 17 insertions, 25 deletions
diff --git a/src/usr/cxxtest/cxxtestexec.C b/src/usr/cxxtest/cxxtestexec.C
index 82e387152..647ab8b4a 100644
--- a/src/usr/cxxtest/cxxtestexec.C
+++ b/src/usr/cxxtest/cxxtestexec.C
@@ -38,13 +38,6 @@ namespace CxxTest
extern uint64_t g_ModulesStarted;
extern uint64_t g_ModulesCompleted;
- /**
- * @var g_CxxTestBarrier - barrier for CxxTest modules.
- * all test modules will wait on this barrier before returning to the caller
- * in cxxtest/cxxtestexec.C .
- */
- barrier_t g_CxxTestBarrier;
-
} // namespace
using namespace INITSERVICE;
@@ -66,6 +59,7 @@ void _start(void *io_pArgs)
{
errlHndl_t l_errl = NULL;
std::vector<const char *> module_list;
+ std::vector<tid_t> tasks;
tid_t tidrc = 0;
INITSERVICE::TaskArgs *pTaskArgs =
static_cast<INITSERVICE::TaskArgs *>( io_pArgs );
@@ -81,18 +75,12 @@ void _start(void *io_pArgs)
VFS::find_test_modules(module_list);
- uint64_t totalmodules = module_list.size();
-
-
// start executing the CxxTest modules
TRACDCOMP( g_trac_cxxtest, ENTER_MRK "Execute CxxTestExec, totalmodules=%d.",
totalmodules);
printkd( "\n Begin CxxTest...\n");
- // set barrier for all the modules being started, plus this module
- barrier_init( &CxxTest::g_CxxTestBarrier, totalmodules+1 );
-
__sync_add_and_fetch(&CxxTest::g_ModulesStarted, 1);
for(std::vector<const char *>::const_iterator i = module_list.begin();
@@ -120,11 +108,18 @@ void _start(void *io_pArgs)
tidrc = task_exec( *i, NULL );
TRACDCOMP( g_trac_cxxtest, "Launched task: %s tidrc=%d",
*i, tidrc );
+ tasks.push_back(tidrc);
}
TRACFCOMP( g_trac_cxxtest, "Waiting for all tasks to finish....");
+
// wait for all the launched tasks to finish
- barrier_wait( &CxxTest::g_CxxTestBarrier );
+ for (std::vector<tid_t>::iterator t = tasks.begin();
+ t != tasks.end();
+ ++t)
+ {
+ task_wait_tid(*t, NULL, NULL);
+ }
__sync_add_and_fetch(&CxxTest::g_ModulesCompleted, 1);
TRACFCOMP( g_trac_cxxtest, " ModulesCompleted=%d",
diff --git a/src/usr/cxxtest/cxxtestgen.pl b/src/usr/cxxtest/cxxtestgen.pl
index c4b5bafef..2ae66a7ba 100755
--- a/src/usr/cxxtest/cxxtestgen.pl
+++ b/src/usr/cxxtest/cxxtestgen.pl
@@ -62,7 +62,7 @@ sub main {
parseCommandline();
scanInputFiles();
writeOutput();
-
+
}
#
@@ -655,14 +655,14 @@ sub writeHostBootSuites() {
$suitecount = 1; # initialize suite count
-
+
## $$TODO print "\tTaskArgs *pTaskArgs = (TaskArgs *)ptr;\n";
foreach (@suites) {
$suite = $_;
$suitevar = "l_ex$suitecount"; # Make up the suite variable name
$testcount = 0; # 0 test count between each suite
-
+
## writeInclude(fileName());
if ( $debug ) {
@@ -697,7 +697,7 @@ sub writeHostBootSuites() {
printf "\t$suitevar->%s();\n\n", testName();
$testcount++;
}
-
+
## $$TODO print "\n";
## $$TODO print "\tif ( pTaskArgs )\n";
## $$TODO print "\t{\n";
@@ -724,10 +724,10 @@ sub write_start() {
print "\n";
## $$TODO print "\tusing namespace TASKARGS;\n";
-
+
print "\n";
print "trace_desc_t *g_trac_test = NULL;\n";
-## Use same trace buffer for all unit tests, i.e. "UNIT_TEST"
+## Use same trace buffer for all unit tests, i.e. "UNIT_TEST"
## print "TRAC_INIT(&g_trac_test, \"", suiteName(), "\", 4096);\n";
print "TRAC_INIT(&g_trac_test, \"", "UNIT_TEST", "\", 4096);\n";
@@ -736,17 +736,14 @@ sub write_start() {
print "extern \"C\"\n";
print "void _start(void *ptr) ";
print "{\n";
-
-
+
+
## here's where the magic happens....
writeHostBootSuites();
print "\n";
print "\t__sync_add_and_fetch(&CxxTest::g_ModulesCompleted, 1);\n";
print "\n";
- print "\tbarrier_wait( &CxxTest::g_CxxTestBarrier );\n";
-
- print "\n";
print "\ttask_end();\n";
print "}\n";
OpenPOWER on IntegriCloud