ecos: specific traps are OK for two benchmarks

The "except1" and "clockcnv" benchmarks explicitly cause a trap and handle
it in their own trap handler.  This, of course, isn't a bad experiment
outcome.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1923 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
hsc
2012-11-13 00:17:18 +00:00
parent a0e6ddd519
commit 9decf95a09

View File

@ -400,10 +400,12 @@ bool EcosKernelTestExperiment::faultInjection() {
bool ecos_test_passed = false; bool ecos_test_passed = false;
bool ecos_test_failed = false; bool ecos_test_failed = false;
BaseListener* ev = simulator.resume(); BaseListener* ev;
// wait until doing no more test_output // wait until experiment-terminating event occurs
while (ev == &func_test_output) { while (true) {
ev = simulator.resume();
if (ev == &func_test_output) {
// re-add this listener // re-add this listener
simulator.addListener(&func_test_output); simulator.addListener(&func_test_output);
@ -430,8 +432,16 @@ bool EcosKernelTestExperiment::faultInjection() {
ecos_test_passed = true; ecos_test_passed = true;
} }
// wait for ev_trap/ev_done // special case: except1 and clockcnv actively generate traps
ev = simulator.resume(); } else if (ev == &ev_trap
&& ((m_benchmark == "except1" && ev_trap.getTriggerNumber() == 13)
|| (m_benchmark == "clockcnv" && ev_trap.getTriggerNumber() == 7))) {
// re-add this listener
simulator.addListener(&ev_trap);
} else {
// in any other case, the experiment is finished
break;
}
} }
// record latest IP regardless of result // record latest IP regardless of result