/* Copyright (c) Zephy Project Contributors * * SPDX-License-Identifier: Apache-2.0 */ #include #include 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); }