fork
Diff: rtos/Mutex.h
- Revision:
- 6:350b53afb889
- Child:
- 8:88a1a9c26ae3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rtos/Mutex.h Fri Nov 23 09:57:31 2012 +0000 @@ -0,0 +1,45 @@ +/* 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