diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/bp_sim.cpp | 11 | ||||
-rw-r--r-- | src/stateless/dp/trex_stateless_dp_core.cpp | 1 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/bp_sim.cpp b/src/bp_sim.cpp index 65dba06d..479f0982 100755 --- a/src/bp_sim.cpp +++ b/src/bp_sim.cpp @@ -3412,7 +3412,7 @@ int CNodeGenerator::flush_file(dsec_t max_time, * if a positive value was given to max time * schedule an exit node */ - if (max_time > 0) { + if ( (max_time > 0) && (!always) ) { CGenNode *exit_node = thread->create_node(); exit_node->m_type = CGenNode::EXIT_SCHED; @@ -3420,7 +3420,7 @@ int CNodeGenerator::flush_file(dsec_t max_time, add_node(exit_node); } - while (true) { + while (!m_p_queue.empty()) { node = m_p_queue.top(); n_time = node->m_time + offset; @@ -3532,9 +3532,6 @@ int CNodeGenerator::flush_file(dsec_t max_time, } - /* cleanup */ - remove_all(thread); - if (!always) { old_offset =offset; }else{ @@ -3611,8 +3608,10 @@ CNodeGenerator::handle_slow_messages(uint8_t type, } } else if ( type == CGenNode::EXIT_SCHED ) { + m_p_queue.pop(); + thread->free_node(node); exit_scheduler = true; - + } else { printf(" ERROR type is not valid %d \n",type); assert(0); diff --git a/src/stateless/dp/trex_stateless_dp_core.cpp b/src/stateless/dp/trex_stateless_dp_core.cpp index 35ce43a8..b2bd0152 100644 --- a/src/stateless/dp/trex_stateless_dp_core.cpp +++ b/src/stateless/dp/trex_stateless_dp_core.cpp @@ -76,6 +76,7 @@ TrexStatelessDpCore::start_scheduler() { double old_offset = 0.0; m_core->m_node_gen.flush_file(-1, 0.0, false, m_core, old_offset); + m_core->m_node_gen.close_file(m_core); } void |