00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 //---------------------------------------------------------------------- 00014 //---------------------------------------------------------------------- 00015 #ifndef ICL_CORE_LOGGING_THREAD_IMPL_LXRT35_H_INCLUDED 00016 #define ICL_CORE_LOGGING_THREAD_IMPL_LXRT35_H_INCLUDED 00017 00018 #include <rtai_posix.h> 00019 00020 #include <icl_core/os_thread.h> 00021 00022 #include "ThreadImpl.h" 00023 00024 #define DEFAULT_STACK_SIZE 0x4000 00025 00026 namespace icl_core { 00027 namespace logging { 00028 00029 class Thread; 00030 00031 class ThreadImplLxrt35 : public ThreadImpl 00032 { 00033 public: 00034 ThreadImplLxrt35(Thread *thread, icl_core::ThreadPriority priority); 00035 virtual ~ThreadImplLxrt35(); 00036 00037 virtual void join(); 00038 virtual bool start(); 00039 00040 private: 00041 static void *runThread(void *arg); 00042 00043 pthread_t m_thread_id; 00044 Thread *m_thread; 00045 ThreadPriority m_priority; 00046 00047 RT_TASK *m_rt_task; 00048 pthread_barrier_t* m_rt_start_sync; 00049 }; 00050 00051 } 00052 } 00053 00054 #endif