blob: 2bb245f41e4adc45f933743aac60c095eadc19c0 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __MUTEX_H__
#define __MUTEX_H__
#include "capu/Error.h"
#define MUTEX_INC_HEADER
#include "arch/Mutex.inc"
#undef MUTEX_INC_HEADER
namespace capu
{
class Mutex
{
#define MUTEX_INC_MEMBER
#include "arch/Mutex.inc"
#undef MUTEX_INC_MEMBER
public:
/**
* Constructor
*/
inline Mutex();
/**
* Destructor
*/
inline ~Mutex();
/**
* used for locking if lock is not currently available, then wait until the lock is captured
* @return CAPU_OK if the locking is successful
* CAPU_ERROR otherwise
*/
inline status_t lock();
/**
* it will attempt to lock a mutex. However if the mutex is already locked, the routine will return false immediately
* @return true if the mutex is successfully locked
* false if the mutex is already locked
*/
inline bool trylock();
/**
*release the lock
*@return CAPU_OK if the unlocking is successful
* CAPU_ERROR otherwise
*/
inline status_t unlock();
};
#define MUTEX_INC_IMPL
#include "arch/Mutex.inc"
#undef MUTEX_INC_IMPL
}
#endif