Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00014 #include "during-ondemand.h"
00015 #include "thread-pool-ondemand.h"
00016 #include "task-manager.h"
00017
00018 #include <systemc>
00019 using namespace std;
00020
00021 sc_during_ondemand::sc_during_ondemand() {
00022 thread_pool_ondemand::get_instance();
00023 L_COUT << "// TEST-IGNORE: sc_during_ondemand instanciated" << endl;
00024 }
00025
00026 sc_during_ondemand::~sc_during_ondemand() {
00027 thread_pool_ondemand::delete_instance();
00028 }
00029
00030 void sc_during_ondemand::extra_time(const sc_core::sc_time & t) {
00031 task_manager::get_instance()->get_current_task()->extra_time(t);
00032 }
00033
00034 void sc_during_ondemand::catch_up(const sc_core::sc_time & t) {
00035 task_manager::get_instance()->get_current_task()->catch_up(t);
00036 }
00037
00038 void sc_during_ondemand::sc_call(const boost::function<void()> & f) {
00039 task_manager::get_instance()->get_current_task()->sc_call(f);
00040 };
00041
00042 void sc_during_ondemand::during(const sc_core::sc_time & time,
00043 const boost::function<void()> & routine) {
00044 sync_task r(routine, time);
00045 thread_pool_ondemand::get_instance()->queue(&r);
00046 r.wait_for_completion();
00047 }
00048
00049