Added mmu_allocate_physical(), which allocates a specified physical memory
range. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35815 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -444,6 +444,23 @@ mmu_allocate(void *virtualAddress, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Allocates the given physical range.
|
||||||
|
\return \c true, if the range could be allocated, \c false otherwise.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
mmu_allocate_physical(addr_t base, size_t size)
|
||||||
|
{
|
||||||
|
addr_t foundBase;
|
||||||
|
if (!get_free_address_range(gKernelArgs.physical_allocated_range,
|
||||||
|
gKernelArgs.num_physical_allocated_ranges, sNextPhysicalAddress,
|
||||||
|
size, &foundBase)) {
|
||||||
|
return B_BAD_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return insert_physical_allocated_range(base, size) == B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*! This will unmap the allocated chunk of memory from the virtual
|
/*! This will unmap the allocated chunk of memory from the virtual
|
||||||
address space. It might not actually free memory (as its implementation
|
address space. It might not actually free memory (as its implementation
|
||||||
is very simple), but it might.
|
is very simple), but it might.
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ extern void mmu_init(void);
|
|||||||
extern void mmu_init_for_kernel(void);
|
extern void mmu_init_for_kernel(void);
|
||||||
extern addr_t mmu_map_physical_memory(addr_t physicalAddress, size_t size, uint32 flags);
|
extern addr_t mmu_map_physical_memory(addr_t physicalAddress, size_t size, uint32 flags);
|
||||||
extern void *mmu_allocate(void *virtualAddress, size_t size);
|
extern void *mmu_allocate(void *virtualAddress, size_t size);
|
||||||
|
extern bool mmu_allocate_physical(addr_t base, size_t size);
|
||||||
extern void mmu_free(void *virtualAddress, size_t size);
|
extern void mmu_free(void *virtualAddress, size_t size);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Reference in New Issue
Block a user