mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:37:35 +00:00
Kernel: Allow specifying a physical alignment when allocating
Some drivers may require allocating contiguous physical pages with a specific alignment for the physical address.
This commit is contained in:
parent
d5472426ec
commit
affb4ef01b
6 changed files with 29 additions and 23 deletions
|
@ -52,12 +52,12 @@ public:
|
|||
bool contains(const PhysicalPage& page) const { return page.paddr() >= m_lower && page.paddr() <= m_upper; }
|
||||
|
||||
RefPtr<PhysicalPage> take_free_page(bool supervisor);
|
||||
NonnullRefPtrVector<PhysicalPage> take_contiguous_free_pages(size_t count, bool supervisor);
|
||||
NonnullRefPtrVector<PhysicalPage> take_contiguous_free_pages(size_t count, bool supervisor, size_t physical_alignment = PAGE_SIZE);
|
||||
void return_page(const PhysicalPage& page);
|
||||
|
||||
private:
|
||||
unsigned find_contiguous_free_pages(size_t count);
|
||||
Optional<unsigned> find_and_allocate_contiguous_range(size_t count);
|
||||
unsigned find_contiguous_free_pages(size_t count, size_t physical_alignment = PAGE_SIZE);
|
||||
Optional<unsigned> find_and_allocate_contiguous_range(size_t count, unsigned alignment = 1);
|
||||
Optional<unsigned> find_one_free_page();
|
||||
void free_page_at(PhysicalAddress addr);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue