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 SEMAPHORE_H
mailgate_user 0:ea15e955433d 3 #define SEMAPHORE_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 Semaphore class is used to manage and protect access to a set of shared resources. */
mailgate_user 0:ea15e955433d 11 class Semaphore {
mailgate_user 0:ea15e955433d 12 public:
mailgate_user 0:ea15e955433d 13 /*! Create and Initialize a Semaphore object used for managing resources.
mailgate_user 0:ea15e955433d 14 \param number of available resources; maximum index value is (count-1).
mailgate_user 0:ea15e955433d 15 */
mailgate_user 0:ea15e955433d 16 Semaphore(int32_t count);
mailgate_user 0:ea15e955433d 17
mailgate_user 0:ea15e955433d 18 /*! Wait until a Semaphore resource 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 number of available tokens, or -1 in case of incorrect parameters
mailgate_user 0:ea15e955433d 21 */
mailgate_user 0:ea15e955433d 22 int32_t wait(uint32_t millisec=osWaitForever);
mailgate_user 0:ea15e955433d 23
mailgate_user 0:ea15e955433d 24 /*! Release a Semaphore resource that was obtain with Semaphore::wait.
mailgate_user 0:ea15e955433d 25 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 26 */
mailgate_user 0:ea15e955433d 27 osStatus release(void);
mailgate_user 0:ea15e955433d 28
mailgate_user 0:ea15e955433d 29 private:
mailgate_user 0:ea15e955433d 30 osSemaphoreId _osSemaphoreId;
mailgate_user 0:ea15e955433d 31 osSemaphoreDef_t _osSemaphoreDef;
mailgate_user 0:ea15e955433d 32 #ifdef CMSIS_OS_RTX
mailgate_user 0:ea15e955433d 33 uint32_t _semaphore_data[2];
mailgate_user 0:ea15e955433d 34 #endif
mailgate_user 0:ea15e955433d 35 };
mailgate_user 0:ea15e955433d 36
mailgate_user 0:ea15e955433d 37 }
mailgate_user 0:ea15e955433d 38 #endif