Files
TAIXIN/sdk/lib/misc/rtt/rt_sem.c

44 lines
844 B
C
Raw Normal View History

#include "rtthread.h"
rt_err_t rt_sem_init(rt_sem_t sem, const char *name, rt_uint32_t value, rt_uint8_t flag)
{
return os_sema_init(sem, value);
}
rt_err_t rt_sem_detach(rt_sem_t sem)
{
return os_sema_del(sem);
}
rt_sem_t rt_sem_create(const char *name, rt_uint32_t value, rt_uint8_t flag)
{
struct rt_semaphore *sem = os_malloc(sizeof(struct rt_semaphore));
if (sem) {
os_sema_init(sem, value);
}
return sem;
}
rt_err_t rt_sem_delete(rt_sem_t sem)
{
os_sema_del(sem);
os_free(sem);
return RT_EOK;
}
rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)
{
return (os_sema_down(sem, time) == 1) ? RT_EOK : RT_ERROR;
}
rt_err_t rt_sem_trytake(rt_sem_t sem)
{
return (os_sema_down(sem, 0) == 1) ? RT_EOK : RT_ERROR;
}
rt_err_t rt_sem_release(rt_sem_t sem)
{
return os_sema_up(sem);
}