mirror of https://github.com/PentHertz/srsLTE.git
Fix phy memory leaks
This commit is contained in:
parent
5faa819dcd
commit
5dcf3b3563
|
@ -142,9 +142,9 @@ private:
|
|||
const static int SF_RECV_THREAD_PRIO = 1;
|
||||
const static int WORKERS_THREAD_PRIO = 2;
|
||||
|
||||
radio_interface_phy* radio = nullptr;
|
||||
std::vector<srslte::log_filter*> log_vec;
|
||||
srslte::logger* logger = nullptr;
|
||||
radio_interface_phy* radio = nullptr;
|
||||
std::vector<std::unique_ptr<srslte::log_filter> > log_vec;
|
||||
srslte::logger* logger = nullptr;
|
||||
|
||||
srslte::log* log_h = nullptr;
|
||||
srslte::log* log_phy_lib_h = nullptr;
|
||||
|
|
|
@ -137,7 +137,7 @@ int phy::init(const phy_args_t& args_, srslte::logger* logger_)
|
|||
mylog->init(tmp, logger, true);
|
||||
mylog->set_level(args.log.phy_level);
|
||||
mylog->set_hex_limit(args.log.phy_hex_limit);
|
||||
log_vec.push_back(mylog);
|
||||
log_vec.push_back(std::move(std::unique_ptr<srslte::log_filter>(mylog)));
|
||||
}
|
||||
|
||||
// Add PHY lib log
|
||||
|
@ -148,13 +148,13 @@ int phy::init(const phy_args_t& args_, srslte::logger* logger_)
|
|||
lib_log->init(tmp, logger, true);
|
||||
lib_log->set_level(args.log.phy_lib_level);
|
||||
lib_log->set_hex_limit(args.log.phy_hex_limit);
|
||||
log_vec.push_back(lib_log);
|
||||
log_vec.push_back(std::move(std::unique_ptr<srslte::log_filter>(lib_log)));
|
||||
} else {
|
||||
log_vec.push_back(nullptr);
|
||||
}
|
||||
|
||||
// set default logger
|
||||
log_h = log_vec.at(0);
|
||||
log_h = log_vec.at(0).get();
|
||||
|
||||
if (!check_args(args)) {
|
||||
return false;
|
||||
|
@ -162,7 +162,7 @@ int phy::init(const phy_args_t& args_, srslte::logger* logger_)
|
|||
|
||||
nof_workers = args.nof_phy_threads;
|
||||
if (log_vec[nof_workers]) {
|
||||
this->log_phy_lib_h = (srslte::log*)log_vec[0];
|
||||
this->log_phy_lib_h = (srslte::log*)log_vec[0].get();
|
||||
srslte_phy_log_register_handler(this, srslte_phy_handler);
|
||||
} else {
|
||||
this->log_phy_lib_h = nullptr;
|
||||
|
@ -177,12 +177,12 @@ int phy::init(const phy_args_t& args_, srslte::logger* logger_)
|
|||
void phy::run_thread()
|
||||
{
|
||||
prach_buffer.init(SRSLTE_MAX_PRB, log_h);
|
||||
common.init(&args, (srslte::log*)log_vec[0], radio, stack);
|
||||
common.init(&args, (srslte::log*)log_vec[0].get(), radio, stack);
|
||||
|
||||
// Add workers to workers pool and start threads
|
||||
for (uint32_t i=0;i<nof_workers;i++) {
|
||||
auto w = std::unique_ptr<sf_worker>(
|
||||
new sf_worker(SRSLTE_MAX_PRB, &common, (srslte::log*)log_vec[i], (srslte::log*)log_vec[nof_workers], &sfsync));
|
||||
auto w = std::unique_ptr<sf_worker>(new sf_worker(
|
||||
SRSLTE_MAX_PRB, &common, (srslte::log*)log_vec[i].get(), (srslte::log*)log_vec[nof_workers].get(), &sfsync));
|
||||
workers_pool.init_worker(i, w.get(), WORKERS_THREAD_PRIO, args.worker_cpu_mask);
|
||||
workers.push_back(std::move(w));
|
||||
}
|
||||
|
|
|
@ -106,17 +106,14 @@ void sync::init(radio_interface_phy* _radio,
|
|||
|
||||
sync::~sync()
|
||||
{
|
||||
if (running) {
|
||||
uint32_t nof_rf_channels = worker_com->args->nof_rf_channels * worker_com->args->nof_rx_ant;
|
||||
for (uint32_t r = 0; r < worker_com->args->nof_radios; r++) {
|
||||
for (uint32_t p = 0; p < nof_rf_channels; p++) {
|
||||
if (sf_buffer[r][p]) {
|
||||
free(sf_buffer[r][p]);
|
||||
}
|
||||
for (uint32_t r = 0; r < SRSLTE_MAX_RADIOS; r++) {
|
||||
for (uint32_t p = 0; p < SRSLTE_MAX_PORTS; p++) {
|
||||
if (sf_buffer[r][p]) {
|
||||
free(sf_buffer[r][p]);
|
||||
}
|
||||
}
|
||||
srslte_ue_sync_free(&ue_sync);
|
||||
}
|
||||
srslte_ue_sync_free(&ue_sync);
|
||||
}
|
||||
|
||||
void sync::stop()
|
||||
|
|
Loading…
Reference in New Issue