39 lines
733 B
C
39 lines
733 B
C
|
|
/* 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);
|
||
|
|
}
|