Adding usb memory pool functions

This commit is contained in:
xj 2024-08-05 00:51:52 -07:00
parent 3928cd46b7
commit bf9c5056ac
2 changed files with 44 additions and 1 deletions

View File

@ -134,4 +134,46 @@ void usb_free_mem_page(usb_mem_page_t page){
header = 0;
usb_mem_pool.header = header;
}
int usb_used_page_num_mem_pool(){
int header, tail, used_num;
header = usb_mem_pool.header;
tail = usb_mem_pool.tail;
used_num = tail - header;
if(used_num < 0)
used_num += MEM_POOL_SIZE;
return used_num;
}
uintptr_t usb_mem_page_phy2vir(uintptr_t phy_addr){
int header, used_num, cnt;
uintptr_t vir_addr = 0;
header = usb_mem_pool.header;
used_num = usb_used_page_num_mem_pool();
cnt = 0;
while(cnt < used_num){
if(usb_mem_pool.pages[header].phy_addr == phy_addr){
vir_addr = usb_mem_pool.pages[header].vir_addr;
break;
}
header++;
if(header == MEM_POOL_SIZE - 1)
header = 0;
cnt++;
}
return vir_addr;
}

View File

@ -60,7 +60,8 @@ int usb_mem_pool_init();
void usb_mem_pool_destory();
int usb_alloc_mem_page(usb_mem_page_t page);
void usb_free_mem_page(usb_mem_page_t page);
int usb_used_page_num_mem_pool();
uintptr_t usb_mem_page_phy2vir(uintptr_t phy_addr);
#endif