mirror of https://github.com/PentHertz/srsLTE.git
removed uneeded sched method to set sched algorithm, and made configured flag atomic
This commit is contained in:
parent
6b3cf6c597
commit
823da24a8e
|
@ -17,9 +17,9 @@
|
||||||
#include "sched_ue.h"
|
#include "sched_ue.h"
|
||||||
#include "srslte/common/log.h"
|
#include "srslte/common/log.h"
|
||||||
#include "srslte/interfaces/sched_interface.h"
|
#include "srslte/interfaces/sched_interface.h"
|
||||||
|
#include <atomic>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <pthread.h>
|
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
namespace srsenb {
|
namespace srsenb {
|
||||||
|
@ -38,9 +38,8 @@ public:
|
||||||
sched();
|
sched();
|
||||||
~sched() override;
|
~sched() override;
|
||||||
|
|
||||||
void init(rrc_interface_mac* rrc);
|
void init(rrc_interface_mac* rrc, const sched_args_t& sched_cfg);
|
||||||
int cell_cfg(const std::vector<cell_cfg_t>& cell_cfg) override;
|
int cell_cfg(const std::vector<cell_cfg_t>& cell_cfg) override;
|
||||||
void set_sched_cfg(sched_args_t* sched_cfg);
|
|
||||||
int reset() final;
|
int reset() final;
|
||||||
|
|
||||||
int ue_cfg(uint16_t rnti, const ue_cfg_t& ue_cfg) final;
|
int ue_cfg(uint16_t rnti, const ue_cfg_t& ue_cfg) final;
|
||||||
|
@ -103,7 +102,7 @@ protected:
|
||||||
|
|
||||||
srslte::tti_point last_tti;
|
srslte::tti_point last_tti;
|
||||||
std::mutex sched_mutex;
|
std::mutex sched_mutex;
|
||||||
bool configured = false;
|
std::atomic<bool> configured;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace srsenb
|
} // namespace srsenb
|
||||||
|
|
|
@ -58,10 +58,7 @@ bool mac::init(const mac_args_t& args_,
|
||||||
|
|
||||||
stack_task_queue = task_sched.make_task_queue();
|
stack_task_queue = task_sched.make_task_queue();
|
||||||
|
|
||||||
scheduler.init(rrc);
|
scheduler.init(rrc, args.sched);
|
||||||
|
|
||||||
// Set default scheduler configuration
|
|
||||||
scheduler.set_sched_cfg(&args.sched);
|
|
||||||
|
|
||||||
// Init softbuffer for SI messages
|
// Init softbuffer for SI messages
|
||||||
common_buffers.resize(cells.size());
|
common_buffers.resize(cells.size());
|
||||||
|
|
|
@ -37,9 +37,10 @@ sched::sched() {}
|
||||||
|
|
||||||
sched::~sched() {}
|
sched::~sched() {}
|
||||||
|
|
||||||
void sched::init(rrc_interface_mac* rrc_)
|
void sched::init(rrc_interface_mac* rrc_, const sched_args_t& sched_cfg_)
|
||||||
{
|
{
|
||||||
rrc = rrc_;
|
rrc = rrc_;
|
||||||
|
sched_cfg = sched_cfg_;
|
||||||
|
|
||||||
// Initialize first carrier scheduler
|
// Initialize first carrier scheduler
|
||||||
carrier_schedulers.emplace_back(new carrier_sched{rrc, &ue_db, 0, &sched_results});
|
carrier_schedulers.emplace_back(new carrier_sched{rrc, &ue_db, 0, &sched_results});
|
||||||
|
@ -50,7 +51,7 @@ void sched::init(rrc_interface_mac* rrc_)
|
||||||
int sched::reset()
|
int sched::reset()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(sched_mutex);
|
std::lock_guard<std::mutex> lock(sched_mutex);
|
||||||
configured = false;
|
configured.store(false, std::memory_order_release);
|
||||||
for (std::unique_ptr<carrier_sched>& c : carrier_schedulers) {
|
for (std::unique_ptr<carrier_sched>& c : carrier_schedulers) {
|
||||||
c->reset();
|
c->reset();
|
||||||
}
|
}
|
||||||
|
@ -58,14 +59,7 @@ int sched::reset()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sched::set_sched_cfg(sched_interface::sched_args_t* sched_cfg_)
|
/// Called by rrc::init
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(sched_mutex);
|
|
||||||
if (sched_cfg_ != nullptr) {
|
|
||||||
sched_cfg = *sched_cfg_;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int sched::cell_cfg(const std::vector<sched_interface::cell_cfg_t>& cell_cfg)
|
int sched::cell_cfg(const std::vector<sched_interface::cell_cfg_t>& cell_cfg)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(sched_mutex);
|
std::lock_guard<std::mutex> lock(sched_mutex);
|
||||||
|
@ -89,8 +83,7 @@ int sched::cell_cfg(const std::vector<sched_interface::cell_cfg_t>& cell_cfg)
|
||||||
carrier_schedulers[i]->carrier_cfg(sched_cell_params[i]);
|
carrier_schedulers[i]->carrier_cfg(sched_cell_params[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
configured = true;
|
configured.store(true, std::memory_order_release);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +285,7 @@ std::array<bool, SRSLTE_MAX_CARRIERS> sched::get_scell_activation_mask(uint16_t
|
||||||
// Downlink Scheduler API
|
// Downlink Scheduler API
|
||||||
int sched::dl_sched(uint32_t tti_tx_dl, uint32_t enb_cc_idx, sched_interface::dl_sched_res_t& sched_result)
|
int sched::dl_sched(uint32_t tti_tx_dl, uint32_t enb_cc_idx, sched_interface::dl_sched_res_t& sched_result)
|
||||||
{
|
{
|
||||||
if (!configured) {
|
if (not configured.load(std::memory_order_acquire)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +306,7 @@ int sched::dl_sched(uint32_t tti_tx_dl, uint32_t enb_cc_idx, sched_interface::dl
|
||||||
// Uplink Scheduler API
|
// Uplink Scheduler API
|
||||||
int sched::ul_sched(uint32_t tti, uint32_t enb_cc_idx, srsenb::sched_interface::ul_sched_res_t& sched_result)
|
int sched::ul_sched(uint32_t tti, uint32_t enb_cc_idx, srsenb::sched_interface::ul_sched_res_t& sched_result)
|
||||||
{
|
{
|
||||||
if (!configured) {
|
if (not configured.load(std::memory_order_acquire)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,6 @@ int test_scell_activation(test_scell_activation_params params)
|
||||||
sched_sim_event_generator generator;
|
sched_sim_event_generator generator;
|
||||||
// Setup scheduler
|
// Setup scheduler
|
||||||
common_sched_tester tester;
|
common_sched_tester tester;
|
||||||
tester.init(nullptr);
|
|
||||||
tester.sim_cfg(sim_args);
|
tester.sim_cfg(sim_args);
|
||||||
|
|
||||||
/* Simulation */
|
/* Simulation */
|
||||||
|
|
|
@ -125,7 +125,7 @@ int common_sched_tester::sim_cfg(sim_sched_args args)
|
||||||
{
|
{
|
||||||
sim_args0 = std::move(args);
|
sim_args0 = std::move(args);
|
||||||
|
|
||||||
sched::set_sched_cfg(&sim_args0.sched_args);
|
sched::init(nullptr, sim_args0.sched_args);
|
||||||
|
|
||||||
sched_sim.reset(new sched_sim_random{this, sim_args0.cell_cfg});
|
sched_sim.reset(new sched_sim_random{this, sim_args0.cell_cfg});
|
||||||
sched_stats.reset(new sched_result_stats{sim_args0.cell_cfg});
|
sched_stats.reset(new sched_result_stats{sim_args0.cell_cfg});
|
||||||
|
|
|
@ -242,7 +242,6 @@ void test_scheduler_rand(sched_sim_events sim)
|
||||||
sched_tester tester;
|
sched_tester tester;
|
||||||
srsenb::sched my_sched;
|
srsenb::sched my_sched;
|
||||||
|
|
||||||
tester.init(nullptr);
|
|
||||||
tester.sim_cfg(std::move(sim.sim_args));
|
tester.sim_cfg(std::move(sim.sim_args));
|
||||||
|
|
||||||
tester.test_next_ttis(sim.tti_events);
|
tester.test_next_ttis(sim.tti_events);
|
||||||
|
|
Loading…
Reference in New Issue