美文网首页
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