/** \file
\brief FIFORunner public header */
-#ifndef HH_FIFORunner_
-#define HH_FIFORunner_ 1
+#ifndef HH_SENF_Scheduler_FIFORunner_
+#define HH_SENF_Scheduler_FIFORunner_ 1
// Custom includes
#include <signal.h>
#include <boost/utility.hpp>
-#include "../boost/intrusive/ilist.hpp"
-#include "../boost/intrusive/ilist_hook.hpp"
+#include <boost/intrusive/ilist.hpp>
+#include <boost/intrusive/ilist_hook.hpp>
#include "../Utils/singleton.hh"
#include "EventManager.hh"
void taskTimeout(unsigned ms);
unsigned taskTimeout() const;
+ void abortOnTimeout(bool flag);
+ bool abortOnTimeout() const;
- unsigned hangCount() const;
+ void startWatchdog();
+ void stopWatchdog();
+
+ unsigned hangCount();
iterator begin() const;
iterator end() const;
+ void yield();
+
protected:
private:
~FIFORunner();
static void watchdog(int, siginfo_t *, void *);
+ void watchdogError();
TaskList::iterator priorityEnd(TaskInfo::Priority p);
void run(TaskList::iterator f, TaskList::iterator l);
NullTask highPriorityEnd_;
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<FIFORunner>;