-
Notifications
You must be signed in to change notification settings - Fork 15
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
Restructure the code into a library #10
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Ivan-Velickovic
force-pushed
the
restructure
branch
3 times, most recently
from
July 10, 2023 10:13
ca1f7fe
to
46704f2
Compare
Ivan-Velickovic
force-pushed
the
restructure
branch
4 times, most recently
from
August 2, 2023 14:27
921d0ab
to
a27a15d
Compare
example directory.
This example has two build systems now, a Makefile as well as the Zig build system for educational purposes. Documentation to follow.
Ultimately I am sick of dealing with the various cross-compilers for GCC and the different behaviour between cross-compilers that are supposed to be doing the same thing (e.g. aarch64-none-elf and aarch64-linux-gnu). This problem will only be worse when we add support for more architectures to the VMM as every architecture is a separate set of binaries needed to be installed. With Clang and LLD, there are only *two* binaries needed for *all* targets we will support. This is significantly easier to mantain and less likely to result in weird toolchain bugs unlike with the various GCC cross-compilers for the same target. If we were to use Zig's packaged toolchain, we could even get away with having a single binary for compiling all of our code. Of course, we still want to support using GCC to compile the library so after this patch we will still need to test that GCC works.
…no helper functions in uio.h written yet, changes made in QEMU not odroidc4
…unctionality, changed startup run order to be last (from S90 to S95)
Another thing that had to be lumped up in this commit was updating to the latest rust-seL4 which also renames to Microkit.
Still can't figure out this LazyPath dependency stuff. Very annoying.
Relevant issue is #15.
Previously the LLVM archiver would print a warning that it was creating an archive for the first time, this is fine for us and not warning of any erroneous behaviour.
Ivan-Velickovic
force-pushed
the
restructure
branch
from
September 23, 2023 12:35
dcd0419
to
e059278
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The following PR is a draft and attempts to re-work the entire project into a VMM library. The motivation for this is that coming up with a "one size fits all" generic VMM is not ideal. Instead, it is ideal to provide users with a library (and plenty of examples) which they then use to produce their own VMM for their use case (a minimal seL4CP VMM is only ~100 lines of code).
The reason I've made this a draft PR is so people know what to expect (and can provide feedback if they wish).
Yet to be done is the following:
util.c
andutil.h
memset
andmemcpy
but they are definitely not as performant as the optimised libc ones.src/
and a separate top-levelexamples/
directory that contains all the example VMMs (e.g a simple generic one just for booting a basic Linux machine with serial input/output, a virtio example VMM, a passthrough example VMM etc).memcpy
andmemset
. So far I have no luck with getting newlib to work.simple
example will have at least Makefile, CMake and Zig to actually demonstrate how to incorporate the VMM into an existing project.Questions to answer:
image
directory to avoid blowing up the size of the repository? Is there actually much image re-use between the examples if we do this generalisation?