|
|
|
@ -30,6 +30,15 @@
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Creates semaphore statically.
|
|
|
|
|
*
|
|
|
|
|
* @param[in] value Initial value for the semaphore.
|
|
|
|
|
*
|
|
|
|
|
* @return Statically initialized semaphore.
|
|
|
|
|
*/
|
|
|
|
|
#define SEMA_CREATE(value) { (value), PRIORITY_QUEUE_INIT }
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief A Semaphore.
|
|
|
|
|
*/
|
|
|
|
@ -39,7 +48,7 @@ typedef struct {
|
|
|
|
|
} sema_t;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Creates semaphore.
|
|
|
|
|
* @brief Creates semaphore dynamically.
|
|
|
|
|
*
|
|
|
|
|
* @see <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_init.html">
|
|
|
|
|
* The Open Group Base Specifications Issue 7, sem_init()
|
|
|
|
@ -133,6 +142,7 @@ static inline int sema_wait(sema_t *sema)
|
|
|
|
|
*
|
|
|
|
|
* @param[in] sema A semaphore.
|
|
|
|
|
*
|
|
|
|
|
* @return 0, on success
|
|
|
|
|
* @return -EINVAL, if semaphore is invalid.
|
|
|
|
|
* @return -EOVERFLOW, if the semaphore's value would overflow.
|
|
|
|
|
*/
|
|
|
|
|