mirror of
https://gitee.com/Vancouver2017/luban-lite.git
synced 2025-12-17 17:48:55 +00:00
V1.0.6
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2022, ArtInChip Technology Co., Ltd
|
||||
* Copyright (c) 2022-2024, ArtInChip Technology Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -11,6 +11,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <semphr.h>
|
||||
#include <timers.h>
|
||||
@@ -264,6 +265,39 @@ static inline int aicos_queue_empty(aicos_queue_t queue)
|
||||
return uxQueueMessagesWaiting((QueueHandle_t)queue) == 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// Wait Queue API
|
||||
//--------------------------------------------------------------------+
|
||||
|
||||
static inline aicos_wqueue_t aicos_wqueue_create(void)
|
||||
{
|
||||
aicos_event_t event = aicos_event_create();
|
||||
|
||||
return (aicos_wqueue_t)event;
|
||||
}
|
||||
|
||||
static inline void aicos_wqueue_delete(aicos_wqueue_t wqueue)
|
||||
{
|
||||
aicos_event_t event = (aicos_event_t)wqueue;
|
||||
|
||||
aicos_event_delete(event);
|
||||
}
|
||||
|
||||
static inline void aicos_wqueue_wakeup(aicos_wqueue_t wqueue)
|
||||
{
|
||||
aicos_event_t event = (aicos_event_t)wqueue;
|
||||
uint32_t recved;
|
||||
|
||||
aicos_event_recv(event, 0x1, &recved, 100);
|
||||
}
|
||||
|
||||
static inline int aicos_wqueue_wait(aicos_wqueue_t wqueue, uint32_t msec)
|
||||
{
|
||||
aicos_event_t event = (aicos_event_t)wqueue;
|
||||
|
||||
return aicos_event_send(event, 0x1);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// Critical API
|
||||
//--------------------------------------------------------------------+
|
||||
@@ -324,6 +358,33 @@ static inline void aicos_free_align(uint32_t mem_type, void *mem)
|
||||
aic_tlsf_free_align(mem_type, mem);
|
||||
}
|
||||
|
||||
static inline void *aicos_memdup(unsigned int mem_type, void *src, size_t size)
|
||||
{
|
||||
void *p;
|
||||
|
||||
if (mem_type == MEM_DEFAULT)
|
||||
p = pvPortMalloc(size);
|
||||
else
|
||||
p = aic_tlsf_malloc(mem_type, size);
|
||||
|
||||
if (p)
|
||||
memcpy(p, src, size);
|
||||
return p;
|
||||
}
|
||||
static inline void *aicos_memdup_align(unsigned int mem_type, void *src, size_t size, size_t align)
|
||||
{
|
||||
void *p;
|
||||
|
||||
if (mem_type == MEM_DEFAULT)
|
||||
p = _aicos_malloc_align_(size, align, 0xFFFF, (void *)pvPortMalloc);
|
||||
else
|
||||
p = aic_tlsf_malloc_align(mem_type, size, align);
|
||||
|
||||
if (p)
|
||||
memcpy(p, src, size);
|
||||
return p;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user