/cs393_vm_api

Virtual memory abstraction & methods for constructing, accessing, manipulating and destroying address spaces

Primary LanguageRust

This is a first whack at defining a medium-level abstraction of an address space in Rust.

The idea is that other kernel operations use this API to create and initialize an address space, that user-space operations can end up calling (via a syscall bridge) operations like add_map and flush to do things to their address space and data, and that the unified VM / File Buffer Cache will use the DataSource interface & (some still unnamed) cache coordinator to cache data from DataSources.

First we need to make sure this API is complete. For one thing, it's missing Flags in the add_map call -- "what are your intentions?" with this mapping, READ, WRITE, EXECUTE, COPY_ON_WRITE, PRIVATE, (vs.) SHARED, etc.

Next, we need some tests that make sure the add_map function actually adds a mapping, that the mappings don't ever overlap, that mappings can be removed, and virtual space reclaimed, etc.

At some point we'll want to migrate this into reedos, so we'll want to switch to #no_std, use a kernel memory allocator, etc.