diff --git a/src/experiments/weather-monitor/experiment.cc b/src/experiments/weather-monitor/experiment.cc index 4ba30c9e..9c36488e 100644 --- a/src/experiments/weather-monitor/experiment.cc +++ b/src/experiments/weather-monitor/experiment.cc @@ -249,6 +249,10 @@ bool WeatherMonitorExperiment::run() // error detected BPSingleEvent ev_detected(WEATHER_FUNC_VPTR_PANIC); simulator.addEvent(&ev_detected); + // timeout (e.g., stuck in a HLT instruction) + // 10000us = 500000 instructions + TimerEvent ev_timeout(10000, true); + simulator.addEvent(&ev_timeout); #if LOCAL && 0 // XXX debug @@ -277,6 +281,10 @@ bool WeatherMonitorExperiment::run() log << "Result FINISHED (" << dec << count_loop_iter_before << "+" << count_loop_iter_after << ")" << endl; result->set_resulttype(result->FINISHED); + } else if (ev == &ev_timeout) { + log << "Result TIMEOUT (" << dec + << count_loop_iter_before << "+" << count_loop_iter_after << ")" << endl; + result->set_resulttype(result->TIMEOUT); } else if (ev == &ev_below_text || ev == &ev_beyond_text) { log << "Result OUTSIDE" << endl; result->set_resulttype(result->OUTSIDE); diff --git a/src/experiments/weather-monitor/weathermonitor.proto b/src/experiments/weather-monitor/weathermonitor.proto index 1dbd9919..416bd3e1 100644 --- a/src/experiments/weather-monitor/weathermonitor.proto +++ b/src/experiments/weather-monitor/weathermonitor.proto @@ -30,7 +30,8 @@ message WeathermonitorProtoMsg { TRAP = 2; OUTSIDE = 3; DETECTED = 4; - UNKNOWN = 5; + TIMEOUT = 5; + UNKNOWN = 6; } required ResultType resulttype = 2;