美文网首页
FreeNOS源代码-Kernel模块-Kernel_Class

FreeNOS源代码-Kernel模块-Kernel_Class

作者: 小胖妞爱吃肉 | 来源:发表于2017-07-21 16:00 被阅读0次

    kernel.cpp 整体结构

    kernel.cpp内部依赖关系图:


    kernel.cpp 一部分方法的详细实现代码

    1. Error Kernel::heap(Address base, Size size) 方法
      为kernel创建堆空间用来实现动态空间(通过new()和delete()方法),所以必须在任何对象被调用前调用;
      Error Kernel::heap(Address base, Size size)
      

    {
    Allocator *bubble, *pool;
    Size meta = sizeof(BubbleAllocator) + sizeof(PoolAllocator);

    // Clear the heap first
    MemoryBlock::set((void *) base, 0, size);
    
    // Setup the dynamic memory heap
    bubble = new (base) BubbleAllocator(base + meta, size - meta);
    pool   = new (base + sizeof(BubbleAllocator)) PoolAllocator();
    pool->setParent(bubble);
    
    // Set default allocator
    Allocator::setDefault(pool);
    return 0;
    

    }

    
    其中涉及代码:
    

    BubbleAllocator::BubbleAllocator(Address start, Size size)
    {
    m_start = (u8 *) start;
    m_current = (u8 *) start;
    m_size = size;
    }

    相关文章

      网友评论

          本文标题:FreeNOS源代码-Kernel模块-Kernel_Class

          本文链接:https://www.haomeiwen.com/subject/mlkekxtx.html