This project is mirrored from https://github.com/hermitcore/libhermit-rs.git. Pull mirroring updated .
  1. 20 Nov, 2017 1 commit
    • Colin Finck's avatar
      Implement physical and virtual memory managers, a FreeList for both, an even... · ee46872e
      Colin Finck authored
      Implement physical and virtual memory managers, a FreeList for both, an even more generic DoublyLinkedList in Safe Rust, and a custom allocator.
      
      The data structures used to manage heap memory require dynamic memory allocations themselves.
      To solve this chicken-egg problem, I have introduced a "Bootstrap Allocator". This is a simple
      single-threaded implementation of a bump allocator using some preallocated space.
      As soon as all required data structures have been set up, the more sophisticated "System Allocator"
      is used.
      
      This code finally breaks compatibility with the HermitCore C implementation.
      It compiles, but applications can only be run again when the remaining kernel components have been ported.
      ee46872e
  2. 09 Nov, 2017 1 commit
  3. 30 Oct, 2017 1 commit
    • Colin Finck's avatar
      Implement mapping pages in safe Rust, extensively using Rust's Typing System,... · feebd4c0
      Colin Finck authored
      Implement mapping pages in safe Rust, extensively using Rust's Typing System, Generics, and Specialization to handle all 4 page tables and support all 3 page sizes.
      
      Unsafe blocks only remain for dereferencing calculated addresses of the page tables and calling ASM/C functions.
      While it wasn't possible to port the optimized iterative algorithm from the C implementation of __page_map to safe Rust, the performance penalty of this recursive algorithm should be negligible.
      An iterative approach may be considered again as soon as Rust supports generic code over varying array sizes.
      
      This replaces the __page_map API provided by HermitCore.
      feebd4c0
  4. 19 Oct, 2017 1 commit
  5. 22 Aug, 2017 1 commit
  6. 19 Aug, 2017 1 commit
  7. 06 Aug, 2017 1 commit
  8. 23 Jul, 2017 1 commit
  9. 22 Jul, 2017 1 commit
  10. 20 Jul, 2017 1 commit
  11. 19 Jul, 2017 1 commit
  12. 17 Jul, 2017 1 commit