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