SELFOUR-1053: Invoke VMM layer directly in vpsace_[new/map]_pages()

This change brings the behaviour of vspace_[new/map]_pages() in line with its
expected behaviour as the OS page-level combinatorial allocator -- such an
allocator is expected to directly call on the PMM and VMM for frames and pages
respectively, then map the frames into the pages, and do some book-keeping
before handing out the new vmem to userspace.

The previous implementation of vspace_[new/map]_pages had a call to
vspace_new_reservation which in turn had a call to malloc somewhere internally,
and this was causing a circular call path in our libraries.
6 files changed
tree: 554c54efd475bbd2274496a28059cdb87725f150
  1. libsel4allocman/
  2. libsel4bench/
  3. libsel4debug/
  4. libsel4muslcsys/
  5. libsel4platsupport/
  6. libsel4simple/
  7. libsel4simple-default/
  8. libsel4sync/
  9. libsel4test/
  10. libsel4utils/
  11. libsel4vka/
  12. libsel4vmm/
  13. libsel4vspace/
  14. .gitignore
  15. LICENSE.txt
  16. README.md
README.md

seL4 Libraries

A collection of libraries for working on seL4.

  • libsel4allocman: an allocator for managing virtual memory, malloc memory and cspaces.
  • libsel4bench: a library with utilities for benchmarking on seL4.
  • libsel4debug: a library with utilities for debugging on seL4. Only useful when debugging a userlevel app; potentially hacky.
  • libsel4muslcsys: a library to support muslc for the root task.
  • libsel4platsupport: a wrapper around libplatsupport specificially for seL4.
  • libsel4simple: an interface which abstracts over the boot environment of a seL4 application.
  • libsel4simple-default: an implementation of simple for the master branch of the kernel.
  • libsel4simple-experimental: an implementatoin of simple for the experimental branch of the kernel.
  • libsel4sync: a synchronisation library that uses notifications to construct basic locks.
  • libsel4test: a very basic test infrastructure library.
  • libsel4utils: a library OS - Commonly used stuff, actively maintained: implements threads, processes, elf loading, virtual memory management etc.
  • libsel4vka: an allocation interface for seL4.
  • libsel4vspace: a virtual memory management interface for seL4.

License

The files in this repository are release under standard open source licenses. Please see individual file headers and the LICENSE_BSD2.txt file for details.