Kernel: Add API for getting contiguous physcial pages

This will be used to create DMA regions.
This commit is contained in:
2023-10-08 02:41:05 +03:00
parent 0fae2c7309
commit 799aab02f5
4 changed files with 95 additions and 1 deletions

View File

@@ -21,6 +21,9 @@ namespace Kernel
paddr_t take_free_page();
void release_page(paddr_t);
paddr_t take_free_contiguous_pages(size_t pages);
void release_contiguous_pages(paddr_t paddr, size_t pages);
size_t used_pages() const;
size_t free_pages() const;

View File

@@ -29,10 +29,13 @@ namespace Kernel
private:
unsigned long long* ull_bitmap_ptr() { return (unsigned long long*)m_vaddr; }
const unsigned long long* ull_bitmap_ptr() const { return (const unsigned long long*)m_vaddr; }
paddr_t paddr_for_bit(unsigned long long) const;
unsigned long long bit_for_paddr(paddr_t paddr) const;
unsigned long long contiguous_bits_set(unsigned long long start, unsigned long long count) const;
private:
const paddr_t m_paddr { 0 };
const size_t m_size { 0 };