mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 05:12:57 +01:00
Merge pull request #17771 from fjmolinas/pr_mynewt_core_fix_sema
pkg/mynewt-core: fix semaphore
This commit is contained in:
commit
5702ca0979
@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "irq.h"
|
||||
#include "os/os_sem.h"
|
||||
@ -31,11 +32,19 @@ os_error_t os_sem_init(struct os_sem *sem, uint16_t tokens)
|
||||
os_error_t os_sem_release(struct os_sem *sem)
|
||||
{
|
||||
int ret = sema_post(&sem->sema);
|
||||
|
||||
return (ret) ? OS_ERROR : OS_OK;
|
||||
}
|
||||
|
||||
os_error_t os_sem_pend(struct os_sem *sem, os_time_t timeout)
|
||||
{
|
||||
int ret = sema_wait_timed_ztimer(&sem->sema, ZTIMER_MSEC, timeout);
|
||||
return (ret) ? OS_ERROR : OS_OK;
|
||||
int ret;
|
||||
|
||||
if (timeout == OS_TIMEOUT_NEVER) {
|
||||
ret = sema_wait(&sem->sema);
|
||||
}
|
||||
else {
|
||||
ret = sema_wait_timed_ztimer(&sem->sema, ZTIMER_MSEC, timeout);
|
||||
}
|
||||
return ret == 0 ? OS_OK : ret == -ETIMEDOUT ? OS_TIMEOUT: OS_ERROR;
|
||||
}
|
||||
|
@ -22,6 +22,8 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "dpl_types.h"
|
||||
#include "dpl_error.h"
|
||||
#include "os/os_sem.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
Loading…
Reference in New Issue
Block a user