Stanislav Silnitskiy / rtos
Committer:
mailgate_user
Date:
Sun Jun 24 19:47:00 2012 +0000
Revision:
0:ea15e955433d
N threads cut down to 4, stack size cut down to 1024

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mailgate_user 0:ea15e955433d 1 /* Copyright (c) 2012 mbed.org */
mailgate_user 0:ea15e955433d 2 #ifndef MUTEX_H
mailgate_user 0:ea15e955433d 3 #define MUTEX_H
mailgate_user 0:ea15e955433d 4
mailgate_user 0:ea15e955433d 5 #include <stdint.h>
mailgate_user 0:ea15e955433d 6 #include "cmsis_os.h"
mailgate_user 0:ea15e955433d 7
mailgate_user 0:ea15e955433d 8 namespace rtos {
mailgate_user 0:ea15e955433d 9
mailgate_user 0:ea15e955433d 10 /*! The Mutex class is used to synchronise the execution of threads.
mailgate_user 0:ea15e955433d 11 This is for example used to protect access to a shared resource.
mailgate_user 0:ea15e955433d 12 */
mailgate_user 0:ea15e955433d 13 class Mutex {
mailgate_user 0:ea15e955433d 14 public:
mailgate_user 0:ea15e955433d 15 /*! Create and Initialize a Mutex object */
mailgate_user 0:ea15e955433d 16 Mutex();
mailgate_user 0:ea15e955433d 17
mailgate_user 0:ea15e955433d 18 /*! Wait until a Mutex becomes available.
mailgate_user 0:ea15e955433d 19 \param millisec timeout value or 0 in case of no time-out. (default: osWaitForever)
mailgate_user 0:ea15e955433d 20 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 21 */
mailgate_user 0:ea15e955433d 22 osStatus lock(uint32_t millisec=osWaitForever);
mailgate_user 0:ea15e955433d 23
mailgate_user 0:ea15e955433d 24 /*! Try to lock the mutex, and return immediately
mailgate_user 0:ea15e955433d 25 \return true if the mutex was acquired, false otherwise.
mailgate_user 0:ea15e955433d 26 */
mailgate_user 0:ea15e955433d 27 bool trylock();
mailgate_user 0:ea15e955433d 28
mailgate_user 0:ea15e955433d 29 /*! Unlock the mutex that has previously been locked by the same thread
mailgate_user 0:ea15e955433d 30 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 31 */
mailgate_user 0:ea15e955433d 32 osStatus unlock();
mailgate_user 0:ea15e955433d 33
mailgate_user 0:ea15e955433d 34 private:
mailgate_user 0:ea15e955433d 35 osMutexId _osMutexId;
mailgate_user 0:ea15e955433d 36 osMutexDef_t _osMutexDef;
mailgate_user 0:ea15e955433d 37 #ifdef CMSIS_OS_RTX
mailgate_user 0:ea15e955433d 38 int32_t _mutex_data[3];
mailgate_user 0:ea15e955433d 39 #endif
mailgate_user 0:ea15e955433d 40 };
mailgate_user 0:ea15e955433d 41
mailgate_user 0:ea15e955433d 42 }
mailgate_user 0:ea15e955433d 43 #endif