panda: non-returning openocd-loop at terminate
Previously for correct termination, the PandaController called the finish-function of the openocd wrapper, invoked a coroutine switch and waited for the openocd wrapper to finish up and switch coroutine again, so the PandaController could exit with correct exitStatus. Now the openocd-wrapper directly exits with chosen exit status. Change-Id: I8d318a4143c53340896ccee4d059a0d79fdcfe89
This commit is contained in:
@ -46,6 +46,7 @@ using std::dec;
|
||||
* Flag for finishing main loop execution.
|
||||
*/
|
||||
static bool oocdw_exection_finished = false;
|
||||
static int oocdw_exCode;
|
||||
|
||||
/*
|
||||
* Initially set target struct pointers for use in
|
||||
@ -334,12 +335,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
LOG << "finished" << endl;
|
||||
|
||||
/*
|
||||
* Return to experiment flow to properly exit execution
|
||||
*/
|
||||
fail::simulator.resume();
|
||||
|
||||
return 0;
|
||||
exit(oocdw_exCode);
|
||||
}
|
||||
|
||||
|
||||
@ -598,9 +594,10 @@ void oocdw_write_reg(uint32_t reg_num, enum arm_reg_group rg, uint32_t data)
|
||||
reg->type->set(reg, (uint8_t*)(&data));
|
||||
}
|
||||
|
||||
void oocdw_finish()
|
||||
void oocdw_finish(int exCode)
|
||||
{
|
||||
oocdw_exection_finished = true;
|
||||
oocdw_exCode = exCode;
|
||||
}
|
||||
|
||||
void oocdw_read_from_memory(uint32_t address, uint32_t chunk_size,
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#define __OOCD_WRAPPER_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <cstdlib>
|
||||
|
||||
#define OOCD_CONF_FILE_PATH "@OOCD_CONF_FILE_PATH@"
|
||||
#define OOCD_CONF_FILES_PATH "@OOCD_CONF_FILES_PATH@"
|
||||
@ -81,7 +82,7 @@ void oocdw_reboot();
|
||||
* Before returning, another coroutine-switch is called, so the
|
||||
* experiment is able to exit in desired state.
|
||||
*/
|
||||
void oocdw_finish();
|
||||
void oocdw_finish(int exCode = EXIT_SUCCESS);
|
||||
|
||||
/*
|
||||
* Read data from pandaboard memory
|
||||
|
||||
@ -9,7 +9,6 @@ set(PROTOS
|
||||
FailControlMessage.proto
|
||||
DatabaseCampaignMessage.proto
|
||||
TracePlugin.proto
|
||||
HopChain.proto
|
||||
)
|
||||
|
||||
#### PROTOBUFS ####
|
||||
|
||||
@ -89,12 +89,12 @@ void PandaController::reboot()
|
||||
|
||||
void PandaController::terminate(int exCode)
|
||||
{
|
||||
oocdw_finish();
|
||||
oocdw_finish(exCode);
|
||||
/*
|
||||
* Resume to let OpenOCD terminate properly
|
||||
* This call does not return!
|
||||
*/
|
||||
m_Flows.resume();
|
||||
SimulatorController::terminate(exCode);
|
||||
}
|
||||
|
||||
} // end-of-namespace: fail
|
||||
|
||||
Reference in New Issue
Block a user