memblock: add functions to convert allocated pointers between virt/phys
This commit is contained in:
@@ -301,6 +301,20 @@ extern int memblock_free(void *addr, size_t size);
|
|||||||
*/
|
*/
|
||||||
extern int memblock_free_phys(phys_addr_t addr, size_t size);
|
extern int memblock_free_phys(phys_addr_t addr, size_t size);
|
||||||
|
|
||||||
|
/* convert a virtual pointer returned by memblock
|
||||||
|
to a physical address.
|
||||||
|
|
||||||
|
@param p the pointer to convert.
|
||||||
|
*/
|
||||||
|
extern phys_addr_t memblock_virt_to_phys(void *p);
|
||||||
|
|
||||||
|
/* convert a physical address returned by memblock
|
||||||
|
to a virtual pointer.
|
||||||
|
|
||||||
|
@param p the address to convert.
|
||||||
|
*/
|
||||||
|
extern void *memblock_phys_to_virt(phys_addr_t p);
|
||||||
|
|
||||||
extern void __next_memory_region(memblock_iter_t *it, \
|
extern void __next_memory_region(memblock_iter_t *it, \
|
||||||
memblock_type_t *type_a, memblock_type_t *type_b,
|
memblock_type_t *type_a, memblock_type_t *type_b,
|
||||||
phys_addr_t start, phys_addr_t end);
|
phys_addr_t start, phys_addr_t end);
|
||||||
|
|||||||
@@ -404,3 +404,13 @@ void __next_memory_region(memblock_iter_t *it, memblock_type_t *type_a, memblock
|
|||||||
/* ULLONG_MAX signals the end of the iteration */
|
/* ULLONG_MAX signals the end of the iteration */
|
||||||
it->__idx = ITER_END;
|
it->__idx = ITER_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
phys_addr_t memblock_virt_to_phys(void *p)
|
||||||
|
{
|
||||||
|
return (phys_addr_t)p - memblock.m_voffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *memblock_phys_to_virt(phys_addr_t p)
|
||||||
|
{
|
||||||
|
return (void *)(p + memblock.m_voffset);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user