diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2012-03-05 11:42:35 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-03-05 14:23:53 -0600 |
commit | 8f4db0860f8b838ce84b40a32754923b9ad7b9fa (patch) | |
tree | 125fdff8e9eecee33525b8105268b3104c8136c8 /src/usr/cxxtest | |
parent | 5938374fc2ce5dab6ddfa4ed8f5c112e421f5619 (diff) | |
download | talos-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.C | 23 | ||||
-rwxr-xr-x | src/usr/cxxtest/cxxtestgen.pl | 19 |
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"; |