Orocos Real-Time Toolkit  2.8.3
Macros | Typedefs | Functions
fosi_interface.h File Reference

This file defines the FOSI (Framework Operating System Interface) from orocos calls to native RTOS calls. More...

#include "oro_arch.h"

Go to the source code of this file.

Macros

#define ORO_SCHED_RT   0 /** Hard real-time scheduler type. @see RTT::OS::ThreadInterface::setScheduler */
 
#define ORO_SCHED_OTHER   1 /** Soft real-time scheduler type. @see RTT::OS::ThreadInterface::setScheduler */
 

Typedefs

typedef struct MyTask RTOS_TASK
 
typedef long long NANO_TIME
 OS representation of nano seconds. More...
 
typedef long long TICK_TIME
 OS representation of system ticks. More...
 
typedef struct sem_struct rt_sem_t
 
typedef struct mutex_struct rt_mutex_t
 
typedef struct recursive_mutex_struct rt_rec_mutex_t
 
typedef struct cond_struct rt_cond_t
 

Functions

NANO_TIME rtos_get_time_ns (void)
 Get "system" time in nanoseconds. More...
 
TICK_TIME rtos_get_time_ticks (void)
 Get "system" time in ticks FIXME see https://proj.fmtc.be/orocos-bugzilla/show_bug.cgi?id=60 More...
 
TICK_TIME nano2ticks (NANO_TIME nano)
 Time conversions from nano seconds to system ticks. More...
 
NANO_TIME ticks2nano (TICK_TIME count)
 Time conversions from system ticks to nano seconds. More...
 
int rtos_sem_init (rt_sem_t *m, int value)
 All these should return zero in case of succes. More...
 
int rtos_sem_destroy (rt_sem_t *m)
 
int rtos_sem_signal (rt_sem_t *m)
 
int rtos_sem_wait (rt_sem_t *m)
 
int rtos_sem_trywait (rt_sem_t *m)
 
int rtos_sem_value (rt_sem_t *m)
 
int rtos_mutex_init (rt_mutex_t *m)
 
int rtos_mutex_destroy (rt_mutex_t *m)
 
int rtos_mutex_rec_init (rt_rec_mutex_t *m)
 
int rtos_mutex_rec_destroy (rt_rec_mutex_t *m)
 
int rtos_mutex_lock (rt_mutex_t *m)
 
int rtos_mutex_trylock (rt_mutex_t *m)
 
int rtos_mutex_trylock_for (rt_mutex_t *m, NANO_TIME relative_time)
 
int rtos_mutex_lock_until (rt_mutex_t *m, NANO_TIME abs_time)
 
int rtos_mutex_unlock (rt_mutex_t *m)
 
int rtos_mutex_rec_lock (rt_rec_mutex_t *m)
 
int rtos_mutex_rec_trylock (rt_rec_mutex_t *m)
 
int rtos_mutex_rec_trylock_for (rt_rec_mutex_t *m, NANO_TIME relative_time)
 
int rtos_mutex_rec_lock_until (rt_rec_mutex_t *m, NANO_TIME abs_time)
 
int rtos_mutex_rec_unlock (rt_rec_mutex_t *m)
 
int rtos_cond_init (rt_cond_t *cond)
 
int rtos_cond_destroy (rt_cond_t *cond)
 
int rtos_cond_wait (rt_cond_t *cond, rt_mutex_t *mutex)
 
int rtos_cond_timedwait (rt_cond_t *cond, rt_mutex_t *mutex, NANO_TIME abs_time)
 
int rtos_cond_broadcast (rt_cond_t *cond)
 
int rtos_printf (const char *fmt,...)
 'real-time' print function. More...
 
void rtos_enable_rt_warning ()
 Allows the RTOS to print a warning when we violate real-time constraints. More...
 
void rtos_disable_rt_warning ()
 Disallows the RTOS to print a warning when we violate real-time constraints. More...
 

Detailed Description

This file defines the FOSI (Framework Operating System Interface) from orocos calls to native RTOS calls.

Rename to 'fosi.h'

Definition in file fosi_interface.h.

Macro Definition Documentation

#define ORO_SCHED_OTHER   1 /** Soft real-time scheduler type. @see RTT::OS::ThreadInterface::setScheduler */

Definition at line 65 of file fosi_interface.h.

#define ORO_SCHED_RT   0 /** Hard real-time scheduler type. @see RTT::OS::ThreadInterface::setScheduler */

Definition at line 64 of file fosi_interface.h.

Typedef Documentation

typedef long long NANO_TIME

OS representation of nano seconds.

Definition at line 70 of file fosi_interface.h.

typedef struct cond_struct rt_cond_t

Definition at line 128 of file fosi_interface.h.

typedef struct mutex_struct rt_mutex_t

Definition at line 109 of file fosi_interface.h.

typedef struct recursive_mutex_struct rt_rec_mutex_t

Definition at line 110 of file fosi_interface.h.

typedef struct sem_struct rt_sem_t

Definition at line 97 of file fosi_interface.h.

typedef struct MyTask RTOS_TASK

Definition at line 58 of file fosi_interface.h.

typedef long long TICK_TIME

OS representation of system ticks.

Definition at line 74 of file fosi_interface.h.

Function Documentation

TICK_TIME nano2ticks ( long long  nano)
inline

Time conversions from nano seconds to system ticks.

Time conversions from nano seconds to system ticks.

The HBGenerator needs this for accurate timekeeping, which is an anachronism in userspace.

Definition at line 100 of file fosi.h.

Referenced by RTT::os::TimeService::nsecs2ticks(), rtos_printf(), RTT::os::rtos_task_get_scheduler(), RTT::os::rtos_task_make_periodic(), and RTT::os::rtos_task_wait_period().

int rtos_cond_broadcast ( rt_cond_t cond)
int rtos_cond_destroy ( rt_cond_t cond)
int rtos_cond_init ( rt_cond_t cond)
int rtos_cond_timedwait ( rt_cond_t cond,
rt_mutex_t mutex,
NANO_TIME  abs_time 
)
int rtos_cond_wait ( rt_cond_t cond,
rt_mutex_t mutex 
)
void rtos_disable_rt_warning ( )

Disallows the RTOS to print a warning when we violate real-time constraints.

Referenced by rtos_printf().

void rtos_enable_rt_warning ( )

Allows the RTOS to print a warning when we violate real-time constraints.

Referenced by rtos_printf().

NANO_TIME rtos_get_time_ns ( void  )
inline
TICK_TIME rtos_get_time_ticks ( void  )
inline
int rtos_mutex_destroy ( rt_mutex_t m)

Definition at line 305 of file fosi_internal.cpp.

Referenced by RTT::os::Mutex::~Mutex().

int rtos_mutex_init ( rt_mutex_t m)

Definition at line 298 of file fosi_internal.cpp.

Referenced by RTT::os::Mutex::Mutex().

int rtos_mutex_lock ( rt_mutex_t m)

Definition at line 314 of file fosi_internal.cpp.

Referenced by RTT::os::Mutex::lock().

int rtos_mutex_lock_until ( rt_mutex_t m,
NANO_TIME  abs_time 
)

Referenced by rtos_nanosleep(), and rtos_printf().

int rtos_mutex_rec_destroy ( rt_rec_mutex_t m)
int rtos_mutex_rec_init ( rt_rec_mutex_t m)
int rtos_mutex_rec_lock ( rt_rec_mutex_t m)
int rtos_mutex_rec_lock_until ( rt_rec_mutex_t m,
NANO_TIME  abs_time 
)

Referenced by rtos_nanosleep(), and rtos_printf().

int rtos_mutex_rec_trylock ( rt_rec_mutex_t m)
int rtos_mutex_rec_trylock_for ( rt_rec_mutex_t m,
NANO_TIME  relative_time 
)
int rtos_mutex_rec_unlock ( rt_rec_mutex_t m)
int rtos_mutex_trylock ( rt_mutex_t m)
int rtos_mutex_trylock_for ( rt_mutex_t m,
NANO_TIME  relative_time 
)
int rtos_mutex_unlock ( rt_mutex_t m)

Definition at line 322 of file fosi_internal.cpp.

Referenced by RTT::os::Mutex::unlock().

int rtos_printf ( const char *  fmt,
  ... 
)
inline
int rtos_sem_destroy ( rt_sem_t m)
int rtos_sem_init ( rt_sem_t m,
int  value 
)

All these should return zero in case of succes.

Their meaning is hopefully obvious

Referenced by rtos_nanosleep(), rtos_printf(), RTT::os::Semaphore::Semaphore(), and RTT::os::Thread::Thread().

int rtos_sem_signal ( rt_sem_t m)
int rtos_sem_trywait ( rt_sem_t m)
int rtos_sem_value ( rt_sem_t m)
int rtos_sem_wait ( rt_sem_t m)
NANO_TIME ticks2nano ( TICK_TIME  count)
inline

Time conversions from system ticks to nano seconds.

Definition at line 107 of file fosi.h.

Referenced by rtos_get_time_ns(), rtos_printf(), and RTT::os::TimeService::ticks2nsecs().