Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00047 #ifndef ORO_FOSI_INTERFACE_H
00048 #define ORO_FOSI_INTERFACE_H
00049
00050 #error "This file is a template for developers, do not include directly."
00051
00052 #ifdef __cplusplus
00053 extern "C"
00054 {
00055 #endif
00056
00057 struct MyTask;
00058 typedef struct MyTask RTOS_TASK;
00059
00060
00061
00062 #include "oro_arch.h"
00063
00064 #define ORO_SCHED_RT 0
00065 #define ORO_SCHED_OTHER 1
00070 typedef long long NANO_TIME;
00071
00074 typedef long long TICK_TIME;
00075
00079 NANO_TIME rtos_get_time_ns( void );
00080
00085 TICK_TIME rtos_get_time_ticks (void );
00086
00090 TICK_TIME nano2ticks( NANO_TIME nano );
00094 NANO_TIME ticks2nano( TICK_TIME count );
00095
00096
00097 typedef struct sem_struct rt_sem_t;
00101 int rtos_sem_init(rt_sem_t* m, int value );
00102 int rtos_sem_destroy(rt_sem_t* m );
00103 int rtos_sem_signal(rt_sem_t* m );
00104 int rtos_sem_wait(rt_sem_t* m );
00105 int rtos_sem_trywait(rt_sem_t* m );
00106 int rtos_sem_wait_timed(rt_sem_t* m, NANO_TIME delay );
00107 int rtos_sem_wait_until(rt_sem_t* m, NANO_TIME abs_time );
00108 int rtos_sem_value(rt_sem_t* m );
00109
00110
00111 typedef struct mutex_struct rt_mutex_t;
00112 typedef struct recursive_mutex_struct rt_rec_mutex_t;
00113
00114 int rtos_mutex_init(rt_mutex_t* m);
00115 int rtos_mutex_destroy(rt_mutex_t* m );
00116 int rtos_mutex_rec_init(rt_rec_mutex_t* m);
00117 int rtos_mutex_rec_destroy(rt_rec_mutex_t* m );
00118 int rtos_mutex_lock( rt_mutex_t* m);
00119 int rtos_mutex_trylock( rt_mutex_t* m);
00120 int rtos_mutex_lock_until( rt_rec_mutex_t* m, NANO_TIME abs_time);
00121 int rtos_mutex_unlock( rt_mutex_t* m);
00122 int rtos_mutex_rec_lock( rt_rec_mutex_t* m);
00123 int rtos_mutex_rec_trylock( rt_rec_mutex_t* m);
00124 int rtos_mutex_rec_lock_until( rt_rec_mutex_t* m, NANO_TIME abs_time);
00125 int rtos_mutex_rec_unlock( rt_rec_mutex_t* m);
00126
00127
00128 typedef struct cond_struct rt_cond_t;
00129 int rtos_cond_init(rt_cond_t *cond);
00130 int rtos_cond_destroy(rt_cond_t *cond);
00131 int rtos_cond_wait(rt_cond_t *cond, rt_mutex_t *mutex);
00132 int rtos_cond_timedwait(rt_cond_t *cond, rt_mutex_t *mutex, NANO_TIME abs_time);
00133 int rtos_cond_broadcast(rt_cond_t *cond);
00134
00138 int rtos_printf( const char *fmt, ... );
00139
00141 void rtos_enable_rt_warning();
00143 void rtos_disable_rt_warning();
00144
00145 #ifdef __cplusplus
00146 }
00147 #endif
00148
00149 #endif // ORO_FOSI_INTERFACE_H