00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 //---------------------------------------------------------------------- 00014 //---------------------------------------------------------------------- 00015 #ifndef ICL_CORE_THREAD_RWLOCK_IMPL_LXRT35_H_INCLUDED 00016 #define ICL_CORE_THREAD_RWLOCK_IMPL_LXRT35_H_INCLUDED 00017 00018 #include <rtai_posix.h> 00019 00020 #include "icl_core_thread/RWLockImpl.h" 00021 00022 namespace icl_core { 00023 namespace thread { 00024 00025 class RWLockImplLxrt35 : public RWLockImpl, protected virtual icl_core::Noncopyable 00026 { 00027 public: 00028 RWLockImplLxrt35(); 00029 virtual ~RWLockImplLxrt35(); 00030 00031 virtual bool readLock(); 00032 virtual bool readLock(const icl_core::TimeStamp& timeout); 00033 virtual bool readLock(const icl_core::TimeSpan& timeout); 00034 virtual bool tryReadLock(); 00035 00036 virtual bool writeLock(); 00037 virtual bool writeLock(const icl_core::TimeStamp& timeout); 00038 virtual bool writeLock(const icl_core::TimeSpan& timeout); 00039 virtual bool tryWriteLock(); 00040 00041 virtual void unlock(); 00042 00043 private: 00044 pthread_rwlock_t *m_rwlock; 00045 }; 00046 00047 } 00048 } 00049 00050 #endif