Official mbed Real Time Operating System based on the RTX implementation of the CMSIS-RTOS API open standard.
Fork of mbed-rtos by
rtos/Mutex.h
- Committer:
- emilmont
- Date:
- 2012-11-23
- Revision:
- 6:350b53afb889
- Child:
- 8:88a1a9c26ae3
File content as of revision 6:350b53afb889:
/* Copyright (c) 2012 mbed.org */
#ifndef MUTEX_H
#define MUTEX_H
#include <stdint.h>
#include "cmsis_os.h"
namespace rtos {
/*! The Mutex class is used to synchronise the execution of threads.
This is for example used to protect access to a shared resource.
*/
class Mutex {
public:
/*! Create and Initialize a Mutex object */
Mutex();
/*! Wait until a Mutex becomes available.
\param millisec timeout value or 0 in case of no time-out. (default: osWaitForever)
\return status code that indicates the execution status of the function.
*/
osStatus lock(uint32_t millisec=osWaitForever);
/*! Try to lock the mutex, and return immediately
\return true if the mutex was acquired, false otherwise.
*/
bool trylock();
/*! Unlock the mutex that has previously been locked by the same thread
\return status code that indicates the execution status of the function.
*/
osStatus unlock();
~Mutex();
private:
osMutexId _osMutexId;
osMutexDef_t _osMutexDef;
#ifdef CMSIS_OS_RTX
int32_t _mutex_data[3];
#endif
};
}
#endif
