mirror of
https://github.com/taigrr/gopher-os
synced 2025-01-18 04:43:13 -08:00
Rename pfn pkg to pmm and export boot allocator Init method
This commit is contained in:
parent
412bcf8402
commit
13d5f494e2
@ -3,6 +3,7 @@ package kernel
|
|||||||
import (
|
import (
|
||||||
"github.com/achilleasa/gopher-os/kernel/hal"
|
"github.com/achilleasa/gopher-os/kernel/hal"
|
||||||
"github.com/achilleasa/gopher-os/kernel/hal/multiboot"
|
"github.com/achilleasa/gopher-os/kernel/hal/multiboot"
|
||||||
|
"github.com/achilleasa/gopher-os/kernel/mem/pmm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Kmain is the only Go symbol that is visible (exported) from the rt0 initialization
|
// Kmain is the only Go symbol that is visible (exported) from the rt0 initialization
|
||||||
@ -19,7 +20,8 @@ import (
|
|||||||
func Kmain(multibootInfoPtr uintptr) {
|
func Kmain(multibootInfoPtr uintptr) {
|
||||||
multiboot.SetInfoPtr(multibootInfoPtr)
|
multiboot.SetInfoPtr(multibootInfoPtr)
|
||||||
|
|
||||||
// Initialize and clear the terminal
|
|
||||||
hal.InitTerminal()
|
hal.InitTerminal()
|
||||||
hal.ActiveTerminal.Clear()
|
hal.ActiveTerminal.Clear()
|
||||||
|
|
||||||
|
pmm.EarlyAllocator.Init()
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package pfn
|
package pmm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/achilleasa/gopher-os/kernel/hal/multiboot"
|
"github.com/achilleasa/gopher-os/kernel/hal/multiboot"
|
||||||
@ -30,8 +30,6 @@ var (
|
|||||||
// blocks will be handed over to a more advanced memory allocator that does
|
// blocks will be handed over to a more advanced memory allocator that does
|
||||||
// support freeing.
|
// support freeing.
|
||||||
type BootMemAllocator struct {
|
type BootMemAllocator struct {
|
||||||
initialized bool
|
|
||||||
|
|
||||||
// allocCount tracks the total number of allocated frames.
|
// allocCount tracks the total number of allocated frames.
|
||||||
allocCount uint64
|
allocCount uint64
|
||||||
|
|
||||||
@ -39,11 +37,10 @@ type BootMemAllocator struct {
|
|||||||
lastAllocIndex int64
|
lastAllocIndex int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// init sets up the boot memory allocator internal state and prints out the
|
// Init sets up the boot memory allocator internal state and prints out the
|
||||||
// system memory map.
|
// system memory map.
|
||||||
func (alloc *BootMemAllocator) init() {
|
func (alloc *BootMemAllocator) Init() {
|
||||||
alloc.lastAllocIndex = -1
|
alloc.lastAllocIndex = -1
|
||||||
alloc.initialized = true
|
|
||||||
|
|
||||||
early.Printf("[boot_mem_alloc] system memory map:\n")
|
early.Printf("[boot_mem_alloc] system memory map:\n")
|
||||||
var totalFree mem.Size
|
var totalFree mem.Size
|
||||||
@ -69,10 +66,6 @@ func (alloc *BootMemAllocator) init() {
|
|||||||
// error then the compiler would call runtime.convT2I which in turn invokes the
|
// error then the compiler would call runtime.convT2I which in turn invokes the
|
||||||
// yet uninitialized Go allocator.
|
// yet uninitialized Go allocator.
|
||||||
func (alloc *BootMemAllocator) AllocFrame(order mem.PageOrder) (Frame, bool) {
|
func (alloc *BootMemAllocator) AllocFrame(order mem.PageOrder) (Frame, bool) {
|
||||||
if !alloc.initialized {
|
|
||||||
alloc.init()
|
|
||||||
}
|
|
||||||
|
|
||||||
if order > 0 {
|
if order > 0 {
|
||||||
return InvalidFrame, false
|
return InvalidFrame, false
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package pfn
|
package pmm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
@ -35,7 +35,7 @@ func TestBootMemoryAllocator(t *testing.T) {
|
|||||||
alloc BootMemAllocator
|
alloc BootMemAllocator
|
||||||
allocFrameCount uint64
|
allocFrameCount uint64
|
||||||
)
|
)
|
||||||
for ; ; allocFrameCount++ {
|
for alloc.Init(); ; allocFrameCount++ {
|
||||||
frame, ok := alloc.AllocFrame(mem.PageOrder(0))
|
frame, ok := alloc.AllocFrame(mem.PageOrder(0))
|
||||||
if !ok {
|
if !ok {
|
||||||
break
|
break
|
@ -1,6 +1,5 @@
|
|||||||
// Package pfn provides physical memory allocator implementations that allow
|
// Package pmm contains code that manages physical memory frame allocations.
|
||||||
// allocations of physical memory frames.
|
package pmm
|
||||||
package pfn
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
@ -1,4 +1,4 @@
|
|||||||
package pfn
|
package pmm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
Loading…
x
Reference in New Issue
Block a user