Line 57: |
Line 57: |
| <pre> | | <pre> |
| this->next_address = 0; | | this->next_address = 0; |
| + | </pre> |
| + | |
| + | == KInitialPageAllocator::Initialize == |
| + | This sets the allocator's next address (function inferred as it is (presumably) inlined and next_address is (presumably) private). |
| + | |
| + | <pre> |
| + | this->next_address = address; |
| + | </pre> |
| + | |
| + | == KInitialPageAllocator::Allocate == |
| + | This linearly allocates a page. |
| + | |
| + | <pre> |
| + | virtual void *KInitialPageAllocator::Allocate() { |
| + | void *address = reinterpret_cast<void *>(this->next_address); |
| + | if (address == nullptr) { |
| + | // If called on uninitialized allocator, panic by infinite looping |
| + | while (true) {} |
| + | } |
| + | this->next_address += 0x1000; |
| + | memset(address, 0, 0x1000); |
| + | return address; |
| + | } |
| + | </pre> |
| + | |
| + | == KInitialPageAllocator::Free == |
| + | This frees a page (implemented as noop in KernelLoader) |
| + | |
| + | <pre> |
| + | virtual void KInitialPageAllocator::Free(void *address) { |
| + | // Does Nothing |
| + | } |
| </pre> | | </pre> |
| | | |