mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-16 03:18:54 +00:00
v1.1.2
This commit is contained in:
@@ -453,34 +453,57 @@ static inline int aicos_queue_empty(aicos_queue_t queue)
|
||||
//--------------------------------------------------------------------+
|
||||
// Wait Queue API
|
||||
//--------------------------------------------------------------------+
|
||||
typedef struct
|
||||
{
|
||||
unsigned int set;
|
||||
aicos_event_t event;
|
||||
}osal_wqueue_def_t;
|
||||
|
||||
typedef osal_wqueue_def_t* osal_wqueue_t;
|
||||
|
||||
static inline aicos_wqueue_t aicos_wqueue_create(void)
|
||||
{
|
||||
aicos_event_t event = aicos_event_create();
|
||||
osal_wqueue_t wqueue;
|
||||
|
||||
return (aicos_wqueue_t)event;
|
||||
wqueue = aicos_malloc(0, sizeof(osal_wqueue_t));
|
||||
if (NULL == wqueue)
|
||||
return NULL;
|
||||
|
||||
wqueue->event = aicos_event_create();
|
||||
wqueue->set = 0;
|
||||
|
||||
return (aicos_wqueue_t)wqueue;
|
||||
}
|
||||
|
||||
static inline void aicos_wqueue_delete(aicos_wqueue_t wqueue)
|
||||
{
|
||||
aicos_event_t event = (aicos_event_t)wqueue;
|
||||
osal_wqueue_t wq = (osal_wqueue_t)wqueue;
|
||||
aicos_event_t event = (aicos_event_t)wq->event;
|
||||
|
||||
aicos_event_delete(event);
|
||||
aicos_free(0, wq);
|
||||
}
|
||||
|
||||
static inline void aicos_wqueue_wakeup(aicos_wqueue_t wqueue)
|
||||
{
|
||||
aicos_event_t event = (aicos_event_t)wqueue;
|
||||
uint32_t recved;
|
||||
osal_wqueue_t wq = (osal_wqueue_t)wqueue;
|
||||
aicos_event_t event = (aicos_event_t)wq->event;
|
||||
|
||||
aicos_event_recv(event, 0x1, &recved, 100);
|
||||
if (wq->set != 1)
|
||||
return;
|
||||
|
||||
wq->set = 0;
|
||||
aicos_event_send(event, 0x1);
|
||||
}
|
||||
|
||||
static inline int aicos_wqueue_wait(aicos_wqueue_t wqueue, uint32_t msec)
|
||||
{
|
||||
aicos_event_t event = (aicos_event_t)wqueue;
|
||||
osal_wqueue_t wq = (osal_wqueue_t)wqueue;
|
||||
aicos_event_t event = (aicos_event_t)wq->event;
|
||||
uint32_t recved;
|
||||
|
||||
return aicos_event_send(event, 0x1);
|
||||
wq->set = 1;
|
||||
return aicos_event_recv(event, 0x1, &recved, 100);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
|
||||
Reference in New Issue
Block a user