00001 #if !defined(__MUTEXSEMAPHORE_HPP)
00002 #define __MUTEXSEMAPHORE_HPP
00003
00004 /*
00005 CoreLinux++
00006 Copyright (C) 1999,2000 CoreLinux Consortium
00007
00008 The CoreLinux++ Library is free software; you can redistribute it and/or
00009 modify it under the terms of the GNU Library General Public License as
00010 published by the Free Software Foundation; either version 2 of the
00011 License, or (at your option) any later version.
00012
00013 The CoreLinux++ Library Library is distributed in the hope that it will
00014 be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00016 Library General Public License for more details.
00017
00018 You should have received a copy of the GNU Library General Public
00019 License along with the GNU C Library; see the file COPYING.LIB. If not,
00020 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00021 Boston, MA 02111-1307, USA.
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 // Constructors and destructors
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 // Accessors
00086 //
00087
00089
00090 virtual bool isLocked( void ) ;
00091
00092 //
00093 // Mutators
00094 //
00095
00097
00098 virtual SemaphoreOperationStatus lockWithWait( void )
00099 throw(SemaphoreException);
00100
00102
00103 virtual SemaphoreOperationStatus lockWithNoWait( void )
00104 throw(SemaphoreException);
00105
00107
00108 // virtual SemaphoreOperationStatus lockWithTimeOut( Timer )
00109 // throw(SemaphoreException) = 0;
00110
00112
00113 virtual SemaphoreOperationStatus release( void )
00114 throw(SemaphoreException);
00115
00116
00117 protected:
00118
00119 //
00120 // Constructors
00121 //
00123
00124 MutexSemaphore( void ) throw( Assertion );
00125
00127
00128 MutexSemaphore( MutexSemaphoreCref )
00129 throw( Assertion );
00130
00131 //
00132 // Operator overloads
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 Common rcs information do not modify
00149 $Author: frankc $
00150 $Revision: 1.2 $
00151 $Date: 2000/06/02 11:51:52 $
00152 $Locker: $
00153 */
00154
00155