Changes

881 bytes added ,  04:18, 31 August 2019
Add KInitialPageAllocator member funcs
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>