Theseus
Theseus copied to clipboard
Theseus is a modern OS written from scratch in Rust that explores 𝐢𝐧𝐭𝐫𝐚𝐥𝐢𝐧𝐠𝐮𝐚𝐥 𝐝𝐞𝐬𝐢𝐠𝐧: closing the semantic gap between compiler and hardware by maximally leveraging the power of language safety and a...
> Theseus uses the `MutexIrqSafe` type to ensure that interrupts are disabled when accessing the inner data. This is quite useful for sensitive contexts where deadlock could otherwise occur if...
We already patch `libc` to refer to our fork on GitHub: https://github.com/theseus-os/Theseus/blob/5cf0bb0f1522b2cd0dccd27d10dcef85ce0eb7b7/Cargo.toml#L114 Now that theseus-os/libc#1 has been merged, we need to update our dependencies to use that latest version.
The crate mimics the `RngCore` interface. It was named `random` to not conflict with `rand`'s symbols. I've also replaced locally defined RNGs in the `ixgbe` and `ota_update_client` crates, that used...
Our eventual goal is to have `std` depend on `libtheseus`. This means getting rid of the patch tables in `Cargo.toml`, as they only work within a workspace: - [x] `spin`...
The implementation of `MappedPages::as_slice::()` can be specialized to _always_ succeed (given our current assumption of all mappings be readable/PRESENT). The implementation of `MappedPages::as_slice_mut::()` can be specialized to succeed as long...
(Relevant after #542 lands) Right now both of these steps are done in the `Makefile`, specifically the `$(nano_core_binary)` target. Doing this in the `Makefile` is okay but it prevents us...
#576 provides a simple mutex implementation; ideally, we'd use a more performant one. Currently, `raw_mutex` only has a fast path (mutex is unlocked) and a slow path (mutex is locked...
The current implementation isn't particularly performant, but it is correct. Improving the performance of the mutex is something we could do in a later PR. Unlike `mutex_sleep`, `raw_mutex` lock operations...
Note: to include all crates in the Theseus workspace, pass `--workspace` to the cargo command. This works for us: ``` cargo clean cargo clippy -Z build-std=core,alloc -Z build-std-features=compiler-builtins-mem --target cfg/x86_64-theseus.json...