X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FFIFORunner.cc;h=8510c0407b9363a828d044b20eeb26b7f002169e;hb=9ded1690d676ba7c7054a7a272debf99102f94c0;hp=35858a0b480b7f683cb9fc6a0a49df086f7c5dec;hpb=03516e8371a90f908ce54dedb3c874eec7dd08ff;p=senf.git diff --git a/Scheduler/FIFORunner.cc b/Scheduler/FIFORunner.cc index 35858a0..8510c04 100644 --- a/Scheduler/FIFORunner.cc +++ b/Scheduler/FIFORunner.cc @@ -36,7 +36,7 @@ #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -prefix_ senf::scheduler::FIFORunner::FIFORunner() +prefix_ senf::scheduler::detail::FIFORunner::FIFORunner() : tasks_ (), next_ (tasks_.end()), watchdogMs_ (1000), watchdogCount_(0), hangCount_ (0) { struct sigevent ev; @@ -61,7 +61,7 @@ prefix_ senf::scheduler::FIFORunner::FIFORunner() SENF_THROW_SYSTEM_EXCEPTION("sigprocmask()"); } -prefix_ senf::scheduler::FIFORunner::~FIFORunner() +prefix_ senf::scheduler::detail::FIFORunner::~FIFORunner() { timer_delete(watchdogId_); signal(SIGURG, SIG_DFL); @@ -89,7 +89,7 @@ prefix_ senf::scheduler::FIFORunner::~FIFORunner() // will mostly be localized to the end of the queue. only occasionally one of the dormant tasks will // be runnable. This additional traversal time will be amortized over a larger time. -prefix_ void senf::scheduler::FIFORunner::dequeue(TaskInfo * task) +prefix_ void senf::scheduler::detail::FIFORunner::dequeue(TaskInfo * task) { TaskList::iterator i (TaskList::current(*task)); if (next_ == i) @@ -99,14 +99,16 @@ prefix_ void senf::scheduler::FIFORunner::dequeue(TaskInfo * task) namespace { struct NullTask - : public senf::scheduler::FIFORunner::TaskInfo + : public senf::scheduler::detail::FIFORunner::TaskInfo { - NullTask() : senf::scheduler::FIFORunner::TaskInfo ("") {} - void run() {}; + NullTask() : senf::scheduler::detail::FIFORunner::TaskInfo ("") {} + virtual void v_run() {}; + virtual char const * v_type() const { return 0; } + virtual std::string v_info() const { return ""; } }; } -prefix_ void senf::scheduler::FIFORunner::run() +prefix_ void senf::scheduler::detail::FIFORunner::run() { // This algorithm is carefully adjusted to make it work even when arbitrary tasks are removed // from the queue @@ -133,7 +135,7 @@ prefix_ void senf::scheduler::FIFORunner::run() TaskInfo & task (*next_); if (task.runnable_) { task.runnable_ = false; - runningName_ = task.name_; + runningName_ = task.name(); # ifdef SENF_DEBUG runningBacktrace_ = task.backtrace_; # endif @@ -169,7 +171,7 @@ prefix_ void senf::scheduler::FIFORunner::run() next_ = tasks_.end(); } -prefix_ void senf::scheduler::FIFORunner::watchdog(int, siginfo_t * si, void *) +prefix_ void senf::scheduler::detail::FIFORunner::watchdog(int, siginfo_t * si, void *) { FIFORunner & runner (*static_cast(si->si_value.sival_ptr)); if (runner.watchdogCount_ > 0) {