00001 #if !defined(__MUTEXSEMAPHORE_HPP)
00002 #define __MUTEXSEMAPHORE_HPP
00003
00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022
00023
00024 #if !defined(__COMMON_HPP)
00025 #include <Common.hpp>
00026 #endif
00027
00028 #if !defined(__SEMAPHORE_HPP)
00029 #include <Semaphore.hpp>
00030 #endif
00031
00032 namespace corelinux
00033 {
00034 DECLARE_CLASS( MutexSemaphore );
00035
00051 class MutexSemaphore : public Semaphore
00052 {
00053 public:
00054
00055
00056
00057
00058
00071 MutexSemaphore
00072 (
00073 SemaphoreGroupPtr,
00074 SemaphoreIdentifierRef,
00075 bool AutoLock = false,
00076 bool Recursive = true,
00077 bool Balking = false
00078 ) throw ( NullPointerException );
00079
00081
00082 virtual ~MutexSemaphore( void );
00083
00084
00085
00086
00087
00089
00090 virtual bool isLocked( void ) ;
00091
00092
00093
00094
00095
00097
00098 virtual SemaphoreOperationStatus lockWithWait( void )
00099 throw(SemaphoreException);
00100
00102
00103 virtual SemaphoreOperationStatus lockWithNoWait( void )
00104 throw(SemaphoreException);
00105
00107
00108
00109
00110
00112
00113 virtual SemaphoreOperationStatus release( void )
00114 throw(SemaphoreException);
00115
00116
00117 protected:
00118
00119
00120
00121 00123
00124 MutexSemaphore( void ) throw( Assertion );
00125
00127
00128 MutexSemaphore( MutexSemaphoreCref )
00129 throw( Assertion );
00130
00131
00132
00133 00135
00136 MutexSemaphoreRef operator=( MutexSemaphoreCref )
00137 throw( Assertion );
00138
00139 private:
00140
00141 };
00142
00143 }
00144
00145 #endif // if !defined(__MUTEXSEMAPHORE_HPP)
00146
00147 00148 00149 00150 00151 00152 00153
00154
00155