1
0
mirror of https://github.com/taigrr/gopher-os synced 2025-01-18 04:43:13 -08:00

6 Commits

Author SHA1 Message Date
Achilleas Anagnostopoulos
8b22862784 Support looking up pools by frame and flagging bitmap entries as
reserved/free
2017-06-18 09:49:51 +01:00
Achilleas Anagnostopoulos
bc44151c93 Reserve and initialize the BitmapAllocator frame pools 2017-06-18 09:49:51 +01:00
Achilleas Anagnostopoulos
8698e7bc93 Exclude the region where the kernel is loaded when allocating frames
The linked.ld script is extended to include the _kernel_start and
_kernel_end symbols which are passed by the rt0 code to Kmain. The
allocator converts these addresses to a start/end frame index by
rounding down the kernel start address to the nearest page and rounding
up the kernel end address to the nearest page.

When allocating frames, the allocator will treat the region defined by
these 2 indices as reserved and skip over it.
2017-06-18 09:15:51 +01:00
Achilleas Anagnostopoulos
ad0bf0a4ca Refactor allocator and unexport it
AllocFrame now rounds up the region start address to the nearest page
multiple and rounds down the region end address to the nearest page
multiple. It also ignores memory regions with size smaller than a page.

Instead of using frame indices and converting them to a pmm.Frame, the
allocator now just keeps track of the last allocated pmm.Frame.

As the allocator is now unexported, a package-exported Init() method is
now provided whose purpose is to initialize the physical allocator
sub-system.
2017-06-18 09:15:50 +01:00
Achilleas Anagnostopoulos
c0a9e07e83 Remove mem.PageOrder
Since the goal is to bootstrap the runtime's slab-like allocator the kernel
should only deal with managing allocations at a single page level.
2017-06-18 09:14:53 +01:00
Achilleas Anagnostopoulos
1d11af21c2 Move bootmem allocator in a sub-pkg 2017-06-18 09:13:19 +01:00