| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #pragma once
- #include "base.h"
- #include "thread.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /// Attributes structure for semaphore.
- typedef struct {
- const char* name; ///< name of the semaphore
- uint32_t attr_bits; ///< attribute bits
- void* cb_mem; ///< memory for control block
- uint32_t cb_size; ///< size of provided memory for control block
- } osSemaphoreAttr_t;
- /// \details Semaphore ID identifies the semaphore.
- typedef void* osSemaphoreId_t;
- /// Create and Initialize a Semaphore object.
- /// \param[in] max_count maximum number of available tokens.
- /// \param[in] initial_count initial number of available tokens.
- /// \param[in] attr semaphore attributes; NULL: default values.
- /// \return semaphore ID for reference by other functions or NULL in case of error.
- osSemaphoreId_t
- osSemaphoreNew(uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t* attr);
- /// Get name of a Semaphore object.
- /// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
- /// \return name as null-terminated string.
- const char* osSemaphoreGetName(osSemaphoreId_t semaphore_id);
- /// Acquire a Semaphore token or timeout if no tokens are available.
- /// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
- /// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
- /// \return status code that indicates the execution status of the function.
- osStatus_t osSemaphoreAcquire(osSemaphoreId_t semaphore_id, uint32_t timeout);
- /// Release a Semaphore token up to the initial maximum count.
- /// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
- /// \return status code that indicates the execution status of the function.
- osStatus_t osSemaphoreRelease(osSemaphoreId_t semaphore_id);
- /// Get current Semaphore token count.
- /// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
- /// \return number of tokens available.
- uint32_t osSemaphoreGetCount(osSemaphoreId_t semaphore_id);
- /// Delete a Semaphore object.
- /// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
- /// \return status code that indicates the execution status of the function.
- osStatus_t osSemaphoreDelete(osSemaphoreId_t semaphore_id);
- #ifdef __cplusplus
- }
- #endif
|