Skip to content
Snippets Groups Projects

Models proper exit

Merged Ezekiel Dohmen requested to merge ezekiel.dohmen/advligorts:proper_exit into master
4 files
+ 92
38
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 11
2
@@ -36,7 +36,7 @@
#include "modelRateInfo.h"
#include "fm10Gen.h"
#include "util/printl.h"
#include "util/kernel/exit_signaling.h"
#include "../fe/timing_common.h" //captureEocTiming
#include "../fe/timing_kernel.h"
@@ -204,6 +204,8 @@ fe_start_controller( void )
if ( initVars( pDsp[ 0 ], pDsp[ 0 ], dspCoeff, MAX_MODULES, pCoeff[ 0 ] ) )
{
pLocalEpics->epicsOutput.fe_status = FILT_INIT_ERROR;
wait_for_exit_signal();
atomic_set(&g_atom_has_exited, 1);
return;
}
@@ -243,6 +245,8 @@ fe_start_controller( void )
{
pLocalEpics->epicsOutput.fe_status = DAQ_INIT_ERROR;
vmeDone = 1;
wait_for_exit_signal();
atomic_set(&g_atom_has_exited, 1);
return;
}
#endif
@@ -287,6 +291,8 @@ fe_start_controller( void )
if ( status )
{
pLocalEpics->epicsOutput.fe_status = DAC_INIT_ERROR;
wait_for_exit_signal();
atomic_set(&g_atom_has_exited, 1);
return;
}
@@ -385,6 +391,8 @@ fe_start_controller( void )
pLocalEpics->epicsOutput.diagWord |= ADC_TIMEOUT_ERR;
pLocalEpics->epicsOutput.fe_status = ADC_TO_ERROR;
deallocate_dac_channels( );
wait_for_exit_signal();
atomic_set(&g_atom_has_exited, 1);
return;
}
@@ -497,7 +505,7 @@ fe_start_controller( void )
// *****************************************************************
/// \> Check if code exit is requested
if ( cycleNum == MAX_MODULES )
vmeDone = stop_working_threads |
vmeDone = atomic_read(&g_atom_should_exit) |
checkEpicsReset( cycleNum, (struct CDS_EPICS*)pLocalEpics );
// *****************************************************************
@@ -673,5 +681,6 @@ fe_start_controller( void )
deallocate_dac_channels( );
/* System reset command received */
atomic_set(&g_atom_has_exited, 1);
return;
}
Loading