zephyr/kernel/sys/sem.c

39 lines
733 B
C
Raw Permalink Normal View History

/* Copyright (c) Zephy Project Contributors
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/sys/sem.h>
int sys_sem_init(struct sys_sem *sem, unsigned int initial_count,
unsigned int limit)
{
k_sem_init(&sem->kernel_sem, initial_count, limit);
return 0;
}
int sys_sem_give(struct sys_sem *sem)
{
k_sem_give(&sem->kernel_sem);
return 0;
}
int sys_sem_take(struct sys_sem *sem, k_timeout_t timeout)
{
int ret_value = 0;
ret_value = k_sem_take(&sem->kernel_sem, timeout);
if ((ret_value == -EAGAIN) || (ret_value == -EBUSY)) {
ret_value = -ETIMEDOUT;
}
return ret_value;
}
unsigned int sys_sem_count_get(struct sys_sem *sem)
{
return k_sem_count_get(&sem->kernel_sem);
}