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);
|
||||
|
||||
/* 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, \
|
||||
memblock_type_t *type_a, memblock_type_t *type_b,
|
||||
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 */
|
||||
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