From 6ab2083403330f7e8439e40f50d052622c7218da Mon Sep 17 00:00:00 2001 From: xj Date: Thu, 1 Aug 2024 01:40:18 -0700 Subject: [PATCH] Add USB memory pool functions --- .../services/drivers/usb/components/mem/usb_mem.c | 8 +++++--- .../services/drivers/usb/components/mem/usb_mem.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c index d6db75b04..134e29c35 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c @@ -81,7 +81,7 @@ mmap_error: } -usb_mem_page_t usb_alloc_mem_page(){ +int usb_alloc_mem_page(usb_mem_page_t page){ usb_mem_page_t selected_page; int header, tail; @@ -94,17 +94,19 @@ usb_mem_page_t usb_alloc_mem_page(){ */ if((tail + 1) % MEM_POOL_SIZE == header) - return NULL; + return -1; selected_page = &usb_mem_pool.pages[tail]; tail++; + memcpy(page, selected_page, sizeof(struct usb_mem_page)); + if(tail == MEM_POOL_SIZE) tail = 0; usb_mem_pool.tail = tail; - return selected_page; + return 0; } diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h index a6d593160..821234025 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h @@ -58,7 +58,7 @@ typedef struct usb_mem_pool *usb_mem_pool_t; int usb_mem_pool_init(); void usb_mem_pool_destory(); -usb_mem_page_t usb_alloc_mem_page(); +int usb_alloc_mem_page(usb_mem_page_t page); void usb_free_mem_page(usb_mem_page_t page);