forked from xuos/xiuos
Adding usb memory pool functions
This commit is contained in:
parent
3928cd46b7
commit
bf9c5056ac
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue