00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 00003 // -- BEGIN LICENSE BLOCK ---------------------------------------------- 00004 // This file is part of FZIs ic_workspace. 00005 // 00006 // This program is free software licensed under the LGPL 00007 // (GNU LESSER GENERAL PUBLIC LICENSE Version 3). 00008 // You can find a copy of this license in LICENSE folder in the top 00009 // directory of the source code. 00010 // 00011 // © Copyright 2016 FZI Forschungszentrum Informatik, Karlsruhe, Germany 00012 // 00013 // -- END LICENSE BLOCK ------------------------------------------------ 00014 00015 //---------------------------------------------------------------------- 00027 //---------------------------------------------------------------------- 00028 #ifndef ICL_CORE_LOGGING_THREAD_IMPL_LXRT35_H_INCLUDED 00029 #define ICL_CORE_LOGGING_THREAD_IMPL_LXRT35_H_INCLUDED 00030 00031 #include <rtai_posix.h> 00032 00033 #include <icl_core/os_thread.h> 00034 00035 #include "ThreadImpl.h" 00036 00037 #define DEFAULT_STACK_SIZE 0x4000 00038 00039 namespace icl_core { 00040 namespace logging { 00041 00042 class Thread; 00043 00044 class ThreadImplLxrt35 : public ThreadImpl 00045 { 00046 public: 00047 ThreadImplLxrt35(Thread *thread, icl_core::ThreadPriority priority); 00048 virtual ~ThreadImplLxrt35(); 00049 00050 virtual void join(); 00051 virtual bool start(); 00052 00053 private: 00054 static void *runThread(void *arg); 00055 00056 pthread_t m_thread_id; 00057 Thread *m_thread; 00058 ThreadPriority m_priority; 00059 00060 RT_TASK *m_rt_task; 00061 pthread_barrier_t* m_rt_start_sync; 00062 }; 00063 00064 } 00065 } 00066 00067 #endif