Orocos Real-Time Toolkit  2.9.0
Public Member Functions | Protected Attributes | List of all members
RTT::os::ThreadInterface Class Referenceabstract

A thread which is being run. More...

#include <rtt/os/ThreadInterface.hpp>

Inheritance diagram for RTT::os::ThreadInterface:
RTT::os::MainThread RTT::os::Thread RTT::Activity RTT::extras::TimerThread RTT::corba::CorbaDispatcher RTT::corba::OrbRunner RTT::extras::FileDescriptorActivity RTT::extras::IRQActivity RTT::mqueue::Dispatcher RTT::extras::SimulationThread

Public Member Functions

 ThreadInterface ()
 
virtual ~ThreadInterface ()
 
virtual bool start ()=0
 Start the Thread. More...
 
virtual bool stop ()=0
 Stop the Thread. More...
 
virtual Seconds getPeriod () const =0
 Get the periodicity in Seconds. More...
 
virtual bool setPeriod (Seconds new_period)=0
 Set the periodicity in Seconds. More...
 
virtual nsecs getPeriodNS () const =0
 Get the periodicity in nanoseconds. More...
 
virtual bool isRunning () const =0
 Returns whether the thread is running. More...
 
virtual bool isActive () const =0
 Returns whether the thread is active. More...
 
virtual const char * getName () const =0
 Read the name of this task. More...
 
virtual RTOS_TASKgetTask ()=0
 Get the RTOS_TASK pointer. More...
 
virtual const RTOS_TASKgetTask () const =0
 const version of the above. More...
 
virtual bool setScheduler (int sched_type)=0
 Change the scheduler policy in which this thread runs. More...
 
virtual int getScheduler () const =0
 Get the scheduler policy in which this thread runs. More...
 
virtual bool setPriority (int priority)=0
 Set the priority of this Thread. More...
 
virtual int getPriority () const =0
 The priority of this Thread. More...
 
virtual unsigned int getPid () const =0
 Returns the Process or Thread ID of this thread, as assigned by the Operating System. More...
 
virtual unsigned getCpuAffinity () const =0
 
virtual void setMaxOverrun (int m)=0
 
virtual int getMaxOverrun () const =0
 
virtual void setWaitPeriodPolicy (int p)=0
 Set the wait policy of a periodic thread. More...
 
virtual void yield ()=0
 Yields (put to the back of the scheduler queue) the calling thread. More...
 
unsigned int threadNumber () const
 The unique thread number (within the same process). More...
 
bool isSelf () const
 

Protected Attributes

int threadnb
 Threads are given an unique number, which follows thread creation order. More...
 

Detailed Description

A thread which is being run.

The periodicity is the time between the starting of two runs or zero for non periodic threads.

Definition at line 56 of file ThreadInterface.hpp.

Constructor & Destructor Documentation

ThreadInterface::ThreadInterface ( )
ThreadInterface::~ThreadInterface ( )
virtual

Definition at line 51 of file ThreadInterface.cpp.

Member Function Documentation

virtual unsigned RTT::os::ThreadInterface::getCpuAffinity ( ) const
pure virtual
Returns
the cpu affinity

Implemented in RTT::os::Thread, RTT::Activity, and RTT::os::MainThread.

Referenced by RTT::extras::TimerThread::Instance().

virtual int RTT::os::ThreadInterface::getMaxOverrun ( ) const
pure virtual

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual const char* RTT::os::ThreadInterface::getName ( ) const
pure virtual

Read the name of this task.

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual Seconds RTT::os::ThreadInterface::getPeriod ( ) const
pure virtual

Get the periodicity in Seconds.

Return zero if non periodic.

Implemented in RTT::os::Thread, RTT::extras::FileDescriptorActivity, RTT::Activity, and RTT::os::MainThread.

virtual nsecs RTT::os::ThreadInterface::getPeriodNS ( ) const
pure virtual

Get the periodicity in nanoseconds.

Return zero if non periodic.

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual unsigned int RTT::os::ThreadInterface::getPid ( ) const
pure virtual

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).

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual int RTT::os::ThreadInterface::getPriority ( ) const
pure virtual

The priority of this Thread.

Returns
The priority given upon construction of this thread or set with setPriority. The returned number has to be interpreted in the current OS scheduler.
See also
setScheduler

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual int RTT::os::ThreadInterface::getScheduler ( ) const
pure virtual

Get the scheduler policy in which this thread runs.

Returns
An OS-specific value which represents the used scheduler.
See also
setScheduler

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual RTOS_TASK* RTT::os::ThreadInterface::getTask ( )
pure virtual

Get the RTOS_TASK pointer.

Note
Using this function leads to non-portable code. It is here for users which wish to tweak OS specific thread settings.

Implemented in RTT::os::Thread, and RTT::os::MainThread.

Referenced by isSelf().

virtual const RTOS_TASK* RTT::os::ThreadInterface::getTask ( ) const
pure virtual

const version of the above.

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::isActive ( ) const
pure virtual

Returns whether the thread is active.

A thread is active between the invocation of start() and the invocation of stop().

Implemented in RTT::os::Thread, RTT::Activity, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::isRunning ( ) const
pure virtual

Returns whether the thread is running.

A thread is running if it is executing its loop() function or in the process of periodically calling step(). Hence for periodic threads, isRunning() == isActive() while for non-periodic threads, isRunning() is only true if isActive() and it is executing loop().

Implemented in RTT::os::Thread, RTT::extras::FileDescriptorActivity, RTT::Activity, RTT::os::MainThread, and RTT::extras::SimulationThread.

bool ThreadInterface::isSelf ( ) const

Definition at line 58 of file ThreadInterface.cpp.

References getTask(), and RTT::os::rtos_task_is_self().

Referenced by RTT::ExecutionEngine::isSelf().

virtual void RTT::os::ThreadInterface::setMaxOverrun ( int  m)
pure virtual

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::setPeriod ( Seconds  new_period)
pure virtual

Set the periodicity in Seconds.

Parameters
new_periodA positive number expressing the period
Returns
true if it was accepted, false otherwise.

Implemented in RTT::extras::FileDescriptorActivity, RTT::Activity, RTT::os::Thread, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::setPriority ( int  priority)
pure virtual

Set the priority of this Thread.

Parameters
priorityThe priority given upon construction of this thread. It has to be interpreted in the current OS scheduler.
See also
setScheduler

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::setScheduler ( int  sched_type)
pure virtual

Change the scheduler policy in which this thread runs.

Parameters
sched_typeAn OS-specific value which selects a scheduler. Orocos requires that these two values are available:
  • ORO_SCHED_RT: Hint the OS that this thread should be scheduled as a priority or real-time process.
  • ORO_SCHED_OTHER: Hint the OS that this thread should not be scheduled as a priority or real-time process.

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.

Returns
true if the change could be made.

Implemented in RTT::os::Thread, and RTT::os::MainThread.

virtual void RTT::os::ThreadInterface::setWaitPeriodPolicy ( int  p)
pure virtual

Set the wait policy of a periodic thread.

Parameters
Thewait policy can be ORO_WAIT_ABS (absolute wait) and ORO_WAIT_REL (relative wait, with respect to current time)

Implemented in RTT::os::Thread, RTT::Activity, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::start ( )
pure virtual

Start the Thread.

Postcondition
initialize() is called first
The Thread is running
Returns
true if the function did succeed. false otherwise.

Implemented in RTT::extras::FileDescriptorActivity, RTT::Activity, RTT::os::Thread, RTT::extras::IRQActivity, RTT::extras::SimulationThread, and RTT::os::MainThread.

virtual bool RTT::os::ThreadInterface::stop ( )
pure virtual

Stop the Thread.

Postcondition
The Thread is no longer being run
finalize() is called when the Thread is stopped.
Returns
true if the function did succeed. false otherwise.

Implemented in RTT::extras::FileDescriptorActivity, RTT::Activity, RTT::os::Thread, and RTT::os::MainThread.

unsigned int RTT::os::ThreadInterface::threadNumber ( ) const
inline

The unique thread number (within the same process).

Definition at line 217 of file ThreadInterface.hpp.

Referenced by RTT::os::Thread::Thread(), and RTT::os::thread_function().

virtual void RTT::os::ThreadInterface::yield ( )
pure virtual

Yields (put to the back of the scheduler queue) the calling thread.

Implemented in RTT::os::Thread, and RTT::os::MainThread.

Member Data Documentation

int RTT::os::ThreadInterface::threadnb
protected

Threads are given an unique number, which follows thread creation order.

See also
os::threads

Definition at line 229 of file ThreadInterface.hpp.

Referenced by ThreadInterface().


The documentation for this class was generated from the following files: