Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

leaky page frame allocator #28

Open
hawkw opened this issue Jan 22, 2018 · 1 comment
Open

leaky page frame allocator #28

hawkw opened this issue Jan 22, 2018 · 1 comment

Comments

@hawkw
Copy link
Member

hawkw commented Jan 22, 2018

The kernel will need a simple page frame allocator to start allocating the initial frames that we'll use permanently, before we set up a page frame allocator with bookkeeping. It's okay for this allocator to leak frames, as we'll never want to de-allocate these initial frame allocations for e.g. re-mapping the kernel.

It seems to me that the easiest and possibly the most compose-able way to write this allocator is just to implement FrameAllocator for Iterator<Item=Frame>. The various architecture-specific memory map providers in the kernel can all return iterators over memory areas, and we can map them into a frame representation and then use that iterator as an allocator.

it should:

  • on calls to allocate(), call iter.next() and return Ok(frame) if next() returns Some or Err(AllocErr::Exhausted) if iter.next() returns None.
  • on calls to deallocate(), panic. (or silently do nothing; but i think if we ever try to deallocate these frames that's worthy of a kernel oops).
  • if/when we add an allocate_range() type API, return AllocErr::Unsupported on all calls to that function
@hawkw
Copy link
Member Author

hawkw commented Jan 22, 2018

This is probably not terribly hard but does require some background knowledge.

@hawkw hawkw added the easy label Jan 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant