X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FFIFORunner.hh;h=1bfdd16a4de300803b90699c2dd891031f73bd57;hb=87204d50de0c429f265aec817bc9efd9af816082;hp=0573d9a97c8cbd5adf659c1efc83b643df883886;hpb=b5d7667a0ee87f023a74df607b582b976241dcf7;p=senf.git diff --git a/Scheduler/FIFORunner.hh b/Scheduler/FIFORunner.hh index 0573d9a..1bfdd16 100644 --- a/Scheduler/FIFORunner.hh +++ b/Scheduler/FIFORunner.hh @@ -29,8 +29,8 @@ // Custom includes #include #include -#include "../boost/intrusive/ilist.hpp" -#include "../boost/intrusive/ilist_hook.hpp" +#include +#include #include "../Utils/singleton.hh" #include "EventManager.hh" @@ -99,6 +99,8 @@ namespace detail { void taskTimeout(unsigned ms); unsigned taskTimeout() const; + void abortOnTimeout(bool flag); + bool abortOnTimeout() const; void startWatchdog(); void stopWatchdog(); @@ -108,6 +110,8 @@ namespace detail { iterator begin() const; iterator end() const; + void yield(); + protected: private: @@ -115,6 +119,7 @@ namespace detail { ~FIFORunner(); static void watchdog(int, siginfo_t *, void *); + void watchdogError(); TaskList::iterator priorityEnd(TaskInfo::Priority p); void run(TaskList::iterator f, TaskList::iterator l); @@ -137,12 +142,14 @@ namespace detail { timer_t watchdogId_; bool watchdogRunning_; unsigned watchdogMs_; + bool watchdogAbort_; std::string runningName_; # ifdef SENF_DEBUG std::string runningBacktrace_; # endif unsigned watchdogCount_; unsigned hangCount_; + bool yield_; friend void senf::scheduler::restart(); friend class singleton;