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;
|
header = 0;
|
||||||
|
|
||||||
usb_mem_pool.header = header;
|
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();
|
void usb_mem_pool_destory();
|
||||||
int usb_alloc_mem_page(usb_mem_page_t page);
|
int usb_alloc_mem_page(usb_mem_page_t page);
|
||||||
void usb_free_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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue