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