kopia lustrzana https://github.com/cariboulabs/cariboulite
signal caught segfault fix
rodzic
35e832e25d
commit
5ca7c52d81
|
@ -243,7 +243,7 @@ public:
|
|||
std::string GetHwGuid(void);
|
||||
CaribouLiteRadio* GetRadioChannel(CaribouLiteRadio::RadioType ch);
|
||||
|
||||
// Ststic detection and factory
|
||||
// Static detection and factory
|
||||
static CaribouLite &GetInstance(bool forceFpgaProg = false, LogLevel logLvl = LogLevel::None);
|
||||
static bool DetectBoard(SysVersion *sysVer, std::string& name, std::string& guid);
|
||||
static void DefaultSignalHandler(void* context, int signal_number, siginfo_t *si);
|
||||
|
|
|
@ -9,7 +9,7 @@ void CaribouLite::DefaultSignalHandler(void* context, int signal_number, siginfo
|
|||
{
|
||||
CaribouLite* cl = (CaribouLite*)context;
|
||||
std::cout << " >> Signal caught: " << signal_number << std::endl << std::flush;
|
||||
cl->ReleaseResources();
|
||||
//cl->ReleaseResources();
|
||||
}
|
||||
|
||||
//==================================================================
|
||||
|
@ -81,12 +81,19 @@ CaribouLite::CaribouLite(bool forceFpgaProg, LogLevel logLvl)
|
|||
void CaribouLite::ReleaseResources(void)
|
||||
{
|
||||
if (!_instance) return;
|
||||
|
||||
for (size_t i = 0; i < _instance->_channels.size(); i++)
|
||||
{
|
||||
if (_instance->_channels[i]) delete _instance->_channels[i];
|
||||
_instance->_channels[i] = NULL;
|
||||
if (_instance->_channels[i])
|
||||
{
|
||||
delete _instance->_channels[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (cariboulite_is_initialized())
|
||||
{
|
||||
cariboulite_close();
|
||||
}
|
||||
if (cariboulite_is_initialized()) cariboulite_close();
|
||||
}
|
||||
|
||||
//==================================================================
|
||||
|
|
|
@ -153,6 +153,7 @@ int caribou_fpga_set_debug_modes (caribou_fpga_st* dev, bool dbg_fifo_push, bool
|
|||
|
||||
int caribou_fpga_set_sys_ctrl_tx_sample_gap (caribou_fpga_st* dev, uint8_t gap);
|
||||
int caribou_fpga_get_sys_ctrl_tx_sample_gap (caribou_fpga_st* dev, uint8_t *gap);
|
||||
|
||||
// I/O Controller
|
||||
int caribou_fpga_set_io_ctrl_mode (caribou_fpga_st* dev, uint8_t debug_mode, caribou_fpga_io_ctrl_rfm_en rfm);
|
||||
int caribou_fpga_get_io_ctrl_mode (caribou_fpga_st* dev, uint8_t *debug_mode, caribou_fpga_io_ctrl_rfm_en *rfm);
|
||||
|
|
|
@ -35,13 +35,13 @@ static void internal_sighandler( struct sys_st_t *sys,
|
|||
int signal_number,
|
||||
siginfo_t *si)
|
||||
{
|
||||
if (ctx.sighandler) ctx.sighandler(ctx.sig_context, signal_number, si);
|
||||
|
||||
if (ctx.signal_shown != signal_number)
|
||||
{
|
||||
fprintf(stderr, "Received signal %d", signal_number);
|
||||
ctx.signal_shown = signal_number;
|
||||
}
|
||||
|
||||
if (ctx.sighandler) ctx.sighandler(ctx.sig_context, signal_number, si);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
|
Ładowanie…
Reference in New Issue