hermit-os / hermit-os/kernel

Async IO, Mio support

Open
#1,043 9 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
1.5k
Forks
132
Avg merge
1d 14h
Merged PRs (30d)
39

Description

Thank you for building hermit; I hope this will become a conerstone of rust infrastructure soon!

At [Rosenpass](https://github.com/rosenpass/rosenpass) (post quantum security for WireGuard in Rust) we are currently exploring using broker based security sandboxing. As part of this project we are trying to add experimental support for running significant parts of the Rosenpass deployment inside Hermit OS.

The core rosenpass process uses mio to handle IO operations to enable the use of async io. We are considering eventually migrating to tokio.

Building hermit-rs-template with `--target x86_64-unknown-hermit` and a dependency on mio without non-default features yields a successful build. Adding the net feature yields a whole bunch of compile time errors [(log)](https://github.com/hermit-os/kernel/files/14073934/errors.txt).

Is using mio expected to work?

```diff
diff --git a/Cargo.toml b/Cargo.toml
index 452bbdc..240333f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,4 +4,7 @@ version = "0.1.0"
edition = "2021"

[target.'cfg(target_os = "hermit")'.dependencies]
-hermit = "0.8"
+hermit = { version = "0.8", features = ["pci", "pci-ids", "acpi", "fsgsbase", "tcp", "rtl8139"]}
+
+[dependencies]
+mio = { version = "0.8.10", features = ["net"] }
```

# Errors (excerpt)

```
Compiling mio v0.8.10
error[E0425]: cannot find value `listener` in this scope
--> /home/karo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mio-0.8.10/src/net/tcp/listener.rs:74:24
|
74 | set_reuseaddr(&listener.inner, true)?;
| ^^^^^^^^ help: a function with a similar name exists: `listen`
|
::: /home/karo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mio-0.8.10/src/sys/shell/tcp.rs:20:1
|
20 | pub(crate) fn listen(_: &net::TcpListener, _: u32) -> io::Result<()> {
| -------------------------------------------------------------------- similarly named function `listen` defined here

error[E0425]: cannot find value `listener` in this scope
--> /home/karo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mio-0.8.10/src/net/tcp/listener.rs:76:15
|
76 | bind(&listener.inner, addr)?;
| ^^^^^^^^ help: a function with a similar name exists: `listen`
|
::: /home/karo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mio-0.8.10/src/sys/shell/tcp.rs:20:1
|
20 | pub(crate) fn listen(_: &net::TcpListener, _: u32) -> io::Result<()> {
| -------------------------------------------------------------------- similarly named function `listen` defined here
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.