Orocos Real-Time Toolkit
2.8.3
|
This thread is the simulated real-time periodic thread in the Orocos system. More...
#include <rtt/extras/SimulationThread.hpp>
Public Member Functions | |
virtual | ~SimulationThread () |
Destructor. More... | |
virtual bool | start () |
Start the Thread. More... | |
virtual bool | isRunning () const |
Returns true if thread is running or run( unsigned int ) is being invoked. More... | |
virtual bool | start (unsigned int maxsteps) |
Only run the simulation maxsteps time steps, then stop the SimulationThread. More... | |
virtual bool | run (unsigned int maxsteps) |
Execute maxsteps steps immediately. More... | |
virtual os::ThreadInterface * | simthread () |
Always returns the MainThread. More... | |
bool | addActivity (PeriodicActivity *t) |
Add an Timer that will be ticked every execution period Once added, a timer can not be removed. More... | |
bool | removeActivity (PeriodicActivity *t) |
virtual bool | stop () |
Stop the Thread. More... | |
void | setStopTimeout (Seconds s) |
Sets the timeout for stop(), in seconds. More... | |
Seconds | getStopTimeout () const |
Returns the desired timeout for stop(), in seconds. More... | |
bool | setPeriod (Seconds s) |
Set the periodicity in Seconds. More... | |
bool | setPeriod (secs s, nsecs ns) |
Set the periodicity of this thread (seconds, nanoseconds) More... | |
bool | setPeriod (TIME_SPEC p) |
Set the periodicity of this thread. More... | |
void | getPeriod (secs &s, nsecs &ns) const |
Get the periodicity of this thread (seconds, nanoseconds) More... | |
virtual Seconds | getPeriod () const |
Get the periodicity in Seconds. More... | |
virtual nsecs | getPeriodNS () const |
Get the periodicity in nanoseconds. More... | |
virtual bool | isPeriodic () const |
virtual bool | isActive () const |
Returns whether the thread is active. More... | |
virtual const char * | getName () const |
Read the name of this task. More... | |
virtual RTOS_TASK * | getTask () |
Get the RTOS_TASK pointer. More... | |
virtual const RTOS_TASK * | getTask () const |
const version of the above. More... | |
virtual bool | setScheduler (int sched_type) |
Change the scheduler policy in which this thread runs. More... | |
virtual int | getScheduler () const |
Get the scheduler policy in which this thread runs. More... | |
virtual bool | setPriority (int priority) |
Set the priority of this Thread. More... | |
virtual int | getPriority () const |
The priority of this Thread. More... | |
virtual unsigned int | getPid () const |
Returns the Process or Thread ID of this thread, as assigned by the Operating System. More... | |
virtual bool | setCpuAffinity (unsigned cpu_affinity) |
Set cpu affinity for this thread. More... | |
virtual unsigned | getCpuAffinity () const |
virtual void | yield () |
Yields (put to the back of the scheduler queue) the calling thread. More... | |
virtual void | setMaxOverrun (int m) |
virtual int | getMaxOverrun () const |
virtual void | setWaitPeriodPolicy (int p) |
Set the wait policy of a periodic thread. More... | |
unsigned int | threadNumber () const |
The unique thread number (within the same process). More... | |
bool | isSelf () const |
Static Public Member Functions | |
static SimulationThreadPtr | Instance (double period=0.001) |
Create the SimulationThread with a given period. More... | |
static bool | Release () |
Releases the SimulationThread Reference counting might aid in making this call safe. More... | |
static TimerThreadPtr | Instance (int priority, double periodicity) |
Create a TimerThread with a given priority and periodicity, using the default scheduler, ORO_SCHED_RT. More... | |
static TimerThreadPtr | Instance (int scheduler, int priority, double periodicity) |
Create a TimerThread with a given scheduler, priority and periodicity. More... | |
static TimerThreadPtr | Instance (int scheduler, int priority, double periodicity, unsigned cpu_affinity) |
Create a TimerThread with a given scheduler, priority and periodicity. More... | |
static void | setStackSize (unsigned int ssize) |
Sets the stack size of the threads to be created. More... | |
static void | setLockTimeoutNoPeriod (double timeout_in_s) |
Sets the lock timeout for a thread which does not have a period The default is 1 second. More... | |
static void | setLockTimeoutPeriodFactor (double factor) |
Set the lock timeout for a thread which has a period by a factor of the period The default is factor 10. More... | |
Static Public Attributes | |
static const unsigned int | MAX_ACTIVITIES = 64 |
Protected Types | |
typedef std::vector< boost::weak_ptr< TimerThread > > | TimerThreadList |
A Boost weak pointer is used to store non-owning pointers to shared objects. More... | |
Protected Member Functions | |
bool | initialize () |
void | step () |
void | finalize () |
SimulationThread (double period) | |
Constructor. More... | |
void | reorderList () |
void | terminate () |
Exit and destroy the thread. More... | |
void | emergencyStop () |
virtual void | loop () |
virtual bool | breakLoop () |
Protected Attributes | |
os::MutexRecursive | mutex |
A Activity can not create a activity of same priority from step(). More... | |
int | threadnb |
Threads are given an unique number, which follows thread creation order. More... | |
Static Protected Attributes | |
static TimerThreadList | TimerThreads |
All timer threads. More... | |
This thread is the simulated real-time periodic thread in the Orocos system.
All your activities in the same program must be a SimulationActivity for this to work, since the os::TimeService global time is updated when this thread runs.
By default, the update period is 0.001 seconds. If you want to run with a finer or coarser grained time step, use the Instance() method and supply another period before SimulationActivities are created.
Definition at line 64 of file SimulationThread.hpp.
|
protectedinherited |
A Boost weak pointer is used to store non-owning pointers to shared objects.
Definition at line 140 of file TimerThread.hpp.
|
virtual |
|
protected |
Constructor.
Definition at line 86 of file SimulationThread.cpp.
References RTT::Logger::endl(), RTT::os::Thread::getName(), RTT::os::Thread::getPeriod(), RTT::os::Thread::getPriority(), RTT::Logger::Info, RTT::Logger::log(), ORO_SCHED_OTHER, and RTT::os::Thread::setScheduler().
|
inherited |
Add an Timer that will be ticked every execution period Once added, a timer can not be removed.
Definition at line 113 of file TimerThread.cpp.
References RTT::extras::TimerThread::MAX_ACTIVITIES, and RTT::extras::TimerThread::mutex.
|
protectedvirtualinherited |
Reimplemented in RTT::corba::OrbRunner, RTT::extras::FileDescriptorActivity, RTT::mqueue::Dispatcher, RTT::Activity, and RTT::corba::CorbaDispatcher.
Definition at line 521 of file Thread.cpp.
Referenced by RTT::os::Thread::stop().
|
protectedinherited |
Definition at line 226 of file Thread.cpp.
References RTT::os::Thread::finalize().
Referenced by RTT::os::thread_function().
|
protectedvirtual |
Reimplemented from RTT::extras::TimerThread.
Definition at line 155 of file SimulationThread.cpp.
References RTT::os::TimeService::enableSystemClock(), RTT::Logger::endl(), RTT::Logger::Info, and RTT::Logger::log().
Referenced by run().
|
virtualinherited |
Implements RTT::os::ThreadInterface.
Reimplemented in RTT::Activity.
Definition at line 606 of file Thread.cpp.
References RTT::os::rtos_task_get_cpu_affinity().
Referenced by RTT::Activity::getCpuAffinity(), and RTT::os::Thread::Thread().
|
virtualinherited |
Implements RTT::os::ThreadInterface.
Definition at line 642 of file Thread.cpp.
|
virtualinherited |
Read the name of this task.
Implements RTT::os::ThreadInterface.
Definition at line 632 of file Thread.cpp.
References RTT::os::rtos_task_get_name().
Referenced by RTT::corba::CorbaDispatcher::initialize(), SimulationThread(), RTT::os::Thread::stop(), RTT::os::Thread::Thread(), RTT::os::thread_function(), and RTT::os::Thread::~Thread().
Get the periodicity of this thread (seconds, nanoseconds)
Definition at line 570 of file Thread.cpp.
|
virtualinherited |
Get the periodicity in Seconds.
Return zero if non periodic.
Implements RTT::os::ThreadInterface.
Reimplemented in RTT::extras::FileDescriptorActivity, and RTT::Activity.
Definition at line 591 of file Thread.cpp.
References RTT::nsecs_to_Seconds().
Referenced by RTT::Activity::getPeriod(), RTT::os::Thread::getStopTimeout(), run(), SimulationThread(), step(), and RTT::os::Thread::Thread().
|
virtualinherited |
Get the periodicity in nanoseconds.
Return zero if non periodic.
Implements RTT::os::ThreadInterface.
Definition at line 596 of file Thread.cpp.
|
virtualinherited |
Returns the Process or Thread ID of this thread, as assigned by the Operating System.
This function tries to return the Thread ID, if the OS supports it, otherwise it returns the process ID. If that is not available either, zero is returned. On Linux systems for example, the Thread ID of the main thread is equal to the Process ID. The Thread ID of every newly created thread is different from the Process ID (and unique).
Implements RTT::os::ThreadInterface.
Definition at line 611 of file Thread.cpp.
References RTT::os::rtos_task_get_pid().
Referenced by RTT::os::Thread::Thread().
|
virtualinherited |
The priority of this Thread.
Implements RTT::os::ThreadInterface.
Definition at line 586 of file Thread.cpp.
References RTT::os::rtos_task_get_priority().
Referenced by SimulationThread(), and RTT::os::Thread::Thread().
|
virtualinherited |
Get the scheduler policy in which this thread runs.
Implements RTT::os::ThreadInterface.
Definition at line 488 of file Thread.cpp.
References RTT::os::rtos_task_get_scheduler(), RTT::os::rtos_task_set_period(), and RTT::os::rtos_task_set_scheduler().
Referenced by RTT::os::Thread::setScheduler(), and RTT::os::Thread::Thread().
|
inherited |
Returns the desired timeout for stop(), in seconds.
If not set with setStopTimeout, the timeout is deduced from the global values lock_timeout_period_factor and lock_timeout_no_period_in_s
Definition at line 408 of file Thread.cpp.
References RTT::os::Thread::getPeriod().
Referenced by RTT::os::Thread::stop().
|
inlinevirtualinherited |
Get the RTOS_TASK pointer.
Implements RTT::os::ThreadInterface.
Definition at line 205 of file Thread.hpp.
Referenced by RTT::os::thread_function().
|
inlinevirtualinherited |
const version of the above.
Implements RTT::os::ThreadInterface.
Definition at line 210 of file Thread.hpp.
|
protectedvirtual |
Reimplemented from RTT::extras::TimerThread.
Definition at line 141 of file SimulationThread.cpp.
References RTT::os::TimeService::enableSystemClock(), RTT::Logger::endl(), RTT::Logger::Info, RTT::Logger::log(), and RTT::Logger::nl().
Referenced by run().
|
static |
Create the SimulationThread with a given period.
Only one SimulationThread can be created.
period | The period in seconds at which the simulation takes steps and updates the TimeService. Only the first invocation of Instance will consider this parameter. The others will ignore it. |
Definition at line 69 of file SimulationThread.cpp.
Referenced by RTT::extras::SimulationActivity::thread().
|
staticinherited |
Create a TimerThread with a given priority and periodicity, using the default scheduler, ORO_SCHED_RT.
Definition at line 57 of file TimerThread.cpp.
References ORO_SCHED_RT.
|
staticinherited |
Create a TimerThread with a given scheduler, priority and periodicity.
Definition at line 62 of file TimerThread.cpp.
|
staticinherited |
Create a TimerThread with a given scheduler, priority and periodicity.
Definition at line 67 of file TimerThread.cpp.
References RTT::os::CheckPriority(), RTT::os::ThreadInterface::getCpuAffinity(), RTT::os::MainThread::Instance(), and RTT::Seconds_to_nsecs().
|
virtualinherited |
Returns whether the thread is active.
A thread is active between the invocation of start() and the invocation of stop().
Implements RTT::os::ThreadInterface.
Reimplemented in RTT::Activity.
Definition at line 464 of file Thread.cpp.
Referenced by RTT::Activity::isActive(), RTT::os::Thread::start(), and RTT::Activity::trigger().
|
virtualinherited |
Reimplemented in RTT::Activity.
Definition at line 581 of file Thread.cpp.
Referenced by RTT::Activity::isPeriodic().
|
virtual |
Returns true if thread is running or run( unsigned int ) is being invoked.
Reimplemented from RTT::os::Thread.
Definition at line 103 of file SimulationThread.cpp.
References RTT::os::Thread::isRunning().
Referenced by run().
|
inherited |
Definition at line 58 of file ThreadInterface.cpp.
References RTT::os::ThreadInterface::getTask(), and RTT::os::rtos_task_is_self().
|
protectedvirtualinherited |
Reimplemented in RTT::corba::OrbRunner, RTT::extras::FileDescriptorActivity, RTT::Activity, RTT::corba::CorbaDispatcher, and RTT::mqueue::Dispatcher.
Definition at line 516 of file Thread.cpp.
References RTT::os::Thread::step().
Referenced by RTT::os::thread_function().
|
static |
Releases the SimulationThread Reference counting might aid in making this call safe.
Definition at line 79 of file SimulationThread.cpp.
|
inherited |
Definition at line 124 of file TimerThread.cpp.
References RTT::extras::TimerThread::mutex.
|
protectedinherited |
Definition at line 163 of file TimerThread.cpp.
Referenced by RTT::extras::TimerThread::finalize(), and RTT::extras::TimerThread::step().
|
virtual |
Execute maxsteps steps immediately.
This function will call the step() functions maxsteps times, without requiring start() or stop() to be called before or after. The thread is thus not used.
Definition at line 122 of file SimulationThread.cpp.
References finalize(), RTT::os::Thread::getPeriod(), initialize(), isRunning(), RTT::os::TimeService::secondsChange(), and RTT::extras::TimerThread::step().
|
virtualinherited |
Set cpu affinity for this thread.
cpu_affinity | The cpu affinity of the thread ( |
Reimplemented in RTT::Activity.
Definition at line 601 of file Thread.cpp.
References RTT::os::rtos_task_set_cpu_affinity().
Referenced by RTT::Activity::setCpuAffinity().
|
staticinherited |
Sets the lock timeout for a thread which does not have a period The default is 1 second.
timeout_in_s | the timeout is seconds |
Definition at line 71 of file Thread.cpp.
|
staticinherited |
Set the lock timeout for a thread which has a period by a factor of the period The default is factor 10.
factor | Factor of the period |
Definition at line 73 of file Thread.cpp.
|
virtualinherited |
Implements RTT::os::ThreadInterface.
Definition at line 637 of file Thread.cpp.
|
virtualinherited |
Set the periodicity in Seconds.
new_period | A positive number expressing the period |
Implements RTT::os::ThreadInterface.
Definition at line 536 of file Thread.cpp.
References RTT::Seconds_to_nsecs().
Referenced by RTT::Activity::setPeriod(), and RTT::os::Thread::setPeriod().
Set the periodicity of this thread (seconds, nanoseconds)
Definition at line 542 of file Thread.cpp.
References rtos_sem_signal(), and RTT::os::rtos_task_make_periodic().
|
inherited |
Set the periodicity of this thread.
Definition at line 565 of file Thread.cpp.
References RTT::os::Thread::setPeriod().
|
virtualinherited |
Set the priority of this Thread.
priority | The priority given upon construction of this thread. It has to be interpreted in the current OS scheduler. |
Implements RTT::os::ThreadInterface.
Definition at line 576 of file Thread.cpp.
References RTT::os::rtos_task_set_priority().
|
virtualinherited |
Change the scheduler policy in which this thread runs.
sched_type | An OS-specific value which selects a scheduler. Orocos requires that these two values are available:
|
Your OS can in addition provide other sched_type's which map more naturally to the schedulers present. If your OS does not make a distinction between real-time and other, both values may map to the same scheduler type.
Implements RTT::os::ThreadInterface.
Definition at line 469 of file Thread.cpp.
References RTT::os::CheckScheduler(), RTT::os::Thread::getScheduler(), RTT::Info, rtos_sem_signal(), RTT::os::rtos_task_get_name(), and RTT::os::rtos_task_set_scheduler().
Referenced by SimulationThread().
|
staticinherited |
Sets the stack size of the threads to be created.
This value is suggestive and may be altered or ignored by your operating system. Use zero to use the system's default.
ssize | the size of the stack in bytes |
Definition at line 69 of file Thread.cpp.
|
inherited |
Sets the timeout for stop(), in seconds.
Definition at line 403 of file Thread.cpp.
|
virtualinherited |
Set the wait policy of a periodic thread.
The | wait policy between ORO_WAIT_ABS (absolute wait) and ORO_WAIT_REL (relative wait) |
Implements RTT::os::ThreadInterface.
Definition at line 647 of file Thread.cpp.
References RTT::os::rtos_task_set_wait_period_policy().
|
virtual |
Always returns the MainThread.
Definition at line 137 of file SimulationThread.cpp.
References RTT::os::MainThread::Instance().
|
virtual |
Start the Thread.
Reimplemented from RTT::os::Thread.
Definition at line 108 of file SimulationThread.cpp.
References RTT::os::Thread::start().
|
virtual |
Only run the simulation maxsteps time steps, then stop the SimulationThread.
Definition at line 114 of file SimulationThread.cpp.
References RTT::os::Thread::start().
|
protectedvirtual |
Reimplemented from RTT::extras::TimerThread.
Definition at line 166 of file SimulationThread.cpp.
References RTT::os::Thread::getPeriod(), RTT::os::TimeService::secondsChange(), RTT::extras::TimerThread::step(), and RTT::os::Thread::stop().
|
virtualinherited |
Stop the Thread.
Implements RTT::os::ThreadInterface.
Reimplemented in RTT::extras::FileDescriptorActivity, and RTT::Activity.
Definition at line 417 of file Thread.cpp.
References RTT::os::Thread::breakLoop(), RTT::Error, RTT::os::Thread::finalize(), RTT::os::Thread::getName(), RTT::os::Thread::getStopTimeout(), RTT::os::MutexTimedLock::isSuccessful(), RTT::os::rtos_task_make_periodic(), and RTT::Warning.
Referenced by step(), RTT::Activity::stop(), ~SimulationThread(), RTT::os::Thread::~Thread(), and RTT::extras::TimerThread::~TimerThread().
|
protectedinherited |
Exit and destroy the thread.
Definition at line 621 of file Thread.cpp.
References rtos_sem_signal(), and RTT::os::rtos_task_delete().
Referenced by RTT::os::Thread::~Thread().
|
inlineinherited |
The unique thread number (within the same process).
Definition at line 216 of file ThreadInterface.hpp.
Referenced by RTT::os::Thread::Thread(), and RTT::os::thread_function().
|
virtualinherited |
Yields (put to the back of the scheduler queue) the calling thread.
Implements RTT::os::ThreadInterface.
Definition at line 616 of file Thread.cpp.
References RTT::os::rtos_task_yield().
|
staticinherited |
Definition at line 76 of file TimerThread.hpp.
Referenced by RTT::extras::TimerThread::addActivity(), and RTT::extras::TimerThread::TimerThread().
|
mutableprotectedinherited |
A Activity can not create a activity of same priority from step().
If so a deadlock will occur.
Definition at line 134 of file TimerThread.hpp.
Referenced by RTT::extras::TimerThread::addActivity(), RTT::extras::TimerThread::finalize(), RTT::extras::TimerThread::removeActivity(), and RTT::extras::TimerThread::step().
|
protectedinherited |
Threads are given an unique number, which follows thread creation order.
Definition at line 228 of file ThreadInterface.hpp.
Referenced by RTT::os::ThreadInterface::ThreadInterface().
|
staticprotectedinherited |
All timer threads.
Definition at line 145 of file TimerThread.hpp.