That goddamn auto&
Setting frames works now!
This commit is contained in:
		
							parent
							
								
									1daa3df74e
								
							
						
					
					
						commit
						f641b5fc8d
					
				
					 2 changed files with 7 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -3,7 +3,8 @@
 | 
			
		|||
 * Eryn Wells <eryn@erynwells.me>
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * An object to tracks and allocate physical page frames.
 | 
			
		||||
 * This file deals with page frames, chunks of physical memory of `pageSize`
 | 
			
		||||
 * length that can be filled with pages.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "Kernel.hh"
 | 
			
		||||
| 
						 | 
				
			
			@ -53,16 +54,14 @@ FrameAllocator::allocate()
 | 
			
		|||
    // Find the first bitmap with a free slot, and the first free slot, and return it.
 | 
			
		||||
    const u32 pagesPerBitmap = Bitmap::length;
 | 
			
		||||
    for (usize i = 0; i < mNumberOfPages; i++) {
 | 
			
		||||
        auto bitmap = mBitmap[i];
 | 
			
		||||
        auto& bitmap = mBitmap[i];
 | 
			
		||||
        if (bitmap.isFull()) {
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
        kstd::printFormat("Found partially full bitmap %ld -> %02X\n", i, u8(bitmap));
 | 
			
		||||
        for (usize j = 0; j < pagesPerBitmap; j++) {
 | 
			
		||||
            if (bitmap.isSet(j)) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            kstd::printFormat("Found unset bit %ld\n", j);
 | 
			
		||||
            bitmap.set(j);
 | 
			
		||||
            usize page = i * pagesPerBitmap + j;
 | 
			
		||||
            void* pageAddress = addressOfPage(page);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,8 @@
 | 
			
		|||
 * Eryn Wells <eryn@erynwells.me>
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * An object to tracks and allocate physical page frames.
 | 
			
		||||
 * This file deals with page frames, chunks of physical memory of `pageSize`
 | 
			
		||||
 * length that can be filled with pages.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MEMORY_FRAMEALLOCATOR_HH__
 | 
			
		||||
| 
						 | 
				
			
			@ -22,10 +23,8 @@ struct FrameAllocator
 | 
			
		|||
    void initialize(const StartupInformation& startupInformation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Allocate a page. Find a free page, mark it in use, and return its
 | 
			
		||||
     * address.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The base address of a free page, or 0 if no page could be allocated.
 | 
			
		||||
     * Allocate a page frame. Find a free page frame, mark it in use, and return
 | 
			
		||||
     * its address.
 | 
			
		||||
     */
 | 
			
		||||
    void* allocate();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue