Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,16 @@ jobs:
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64-unknown-none-softfloat --exclude-features dhcpv4,dns,gem-net,net,rtl8139,virtio-net --features pci
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64-unknown-none-softfloat --exclude-features gem-net,rtl8139 --features tcp,virtio-net
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64-unknown-none-softfloat --exclude-features gem-net,rtl8139 --features pci,tcp,virtio-net
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64-unknown-none-softfloat --exclude-features gem-net,virtio-net --features tcp,rtl8139
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64-unknown-none-softfloat --exclude-features gem-net,virtio-net --features pci,tcp,rtl8139
- name: cargo hack check (aarch64_be)
run: |
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64_be-unknown-none-softfloat -Zbuild-std=core,alloc --exclude-features dhcpv4,dns,gem-net,net,rtl8139,virtio-net
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64_be-unknown-none-softfloat -Zbuild-std=core,alloc --exclude-features dhcpv4,dns,gem-net,net,rtl8139,virtio-net --features pci
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64_be-unknown-none-softfloat -Zbuild-std=core,alloc --exclude-features gem-net,rtl8139 --features tcp,virtio-net
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64_be-unknown-none-softfloat -Zbuild-std=core,alloc --exclude-features gem-net,rtl8139 --features pci,tcp,virtio-net
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64_be-unknown-none-softfloat -Zbuild-std=core,alloc --exclude-features gem-net,virtio-net --features tcp,rtl8139
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target aarch64_be-unknown-none-softfloat -Zbuild-std=core,alloc --exclude-features gem-net,virtio-net --features pci,tcp,rtl8139
- name: cargo hack check (riscv64)
run: |
cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target riscv64gc-unknown-none-elf --exclude-features dhcpv4,dns,gem-net,net,rtl8139,virtio-net
Expand Down Expand Up @@ -251,31 +255,31 @@ jobs:
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package httpd --no-default-features --features ci,hermit/dhcpv4,hermit/tcp,hermit/virtio-net qemu ${{ matrix.flags }} --devices virtio-net-mmio
if: matrix.arch == 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package httpd --features ci,hermit/dhcpv4,hermit/rtl8139 qemu ${{ matrix.flags }} --devices rtl8139
if: matrix.arch == 'x86_64'
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package httpd --no-default-features --features ci,hermit/dhcpv4,hermit/tcp,hermit/gem-net qemu ${{ matrix.flags }} --devices cadence-gem
if: matrix.arch == 'riscv64'
- run: cargo clean
working-directory: .
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package testudp --features hermit/udp,hermit/dhcpv4,hermit/virtio-net qemu ${{ matrix.flags }} --devices virtio-net-pci
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package testudp --features hermit/udp,hermit/dhcpv4,hermit/rtl8139 qemu ${{ matrix.flags }} --devices rtl8139
if: matrix.arch == 'x86_64'
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package testudp --no-default-features --features hermit/udp,hermit/dhcpv4,hermit/gem-net qemu ${{ matrix.flags }} --devices cadence-gem
if: matrix.arch == 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package miotcp --features hermit/dhcpv4,hermit/virtio-net qemu ${{ matrix.flags }} --devices virtio-net-pci
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package miotcp --features hermit/dhcpv4,hermit/rtl8139 qemu ${{ matrix.flags }} --devices rtl8139
if: matrix.arch == 'x86_64'
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package miotcp --no-default-features --features hermit/dhcpv4,hermit/tcp,hermit/gem-net qemu ${{ matrix.flags }} --devices cadence-gem
if: matrix.arch == 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package poll --features hermit/dhcpv4,hermit/virtio-net qemu ${{ matrix.flags }} --devices virtio-net-pci
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package poll --features hermit/dhcpv4,hermit/rtl8139 qemu ${{ matrix.flags }} --devices rtl8139
if: matrix.arch == 'x86_64'
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package mioudp --features hermit/udp,hermit/dhcpv4,hermit/virtio-net qemu ${{ matrix.flags }} --devices virtio-net-pci
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package mioudp --features hermit/udp,hermit/dhcpv4,hermit/rtl8139 qemu ${{ matrix.flags }} --devices rtl8139
if: matrix.arch == 'x86_64'
if: matrix.arch != 'riscv64'
- run: cargo xtask ci rs --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --package loopback qemu ${{ matrix.flags }}
env:
HERMIT_IP: 127.0.0.1
Expand Down
4 changes: 4 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ mmap = ["mman"] # Deprecated in favor of mman
newlib = []
nostd = []
pci = ["virtio?/pci"]
rtl8139 = ["net", "pci"]
rtl8139 = ["net", "pci", "volatile/derive", "endian-num"]
semihosting = ["dep:semihosting"]
shell = ["simple-shell"]
smp = []
Expand Down Expand Up @@ -121,6 +121,7 @@ build-time = "0.1.3"
cfg-if = "1"
crossbeam-utils = { version = "0.8", default-features = false }
embedded-io = { version = "0.7", features = ["alloc"] }
endian-num = { version = "0.2", optional = true, features = ["linux-types"] }
enum_dispatch = "0.3"
fdt = { version = "0.1", features = ["pretty-printing"] }
free-list = "0.3"
Expand Down
2 changes: 1 addition & 1 deletion src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pub(crate) const USER_STACK_SIZE: usize = 0x0010_0000;
all(
not(any(
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
all(target_arch = "x86_64", feature = "rtl8139"),
feature = "rtl8139",
)),
feature = "virtio-net",
),
Expand Down
22 changes: 11 additions & 11 deletions src/drivers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pub mod pci;
#[cfg(any(
all(
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
not(all(target_arch = "x86_64", feature = "rtl8139")),
not(feature = "rtl8139"),
feature = "virtio-net",
),
feature = "fuse",
Expand All @@ -39,12 +39,12 @@ pub(crate) type InterruptHandlerQueue = VecDeque<fn()>;
pub mod error {
#[cfg(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")))]
use crate::drivers::net::gem::GEMError;
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
#[cfg(feature = "rtl8139")]
use crate::drivers::net::rtl8139::RTL8139Error;
#[cfg(any(
all(
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
not(all(target_arch = "x86_64", feature = "rtl8139")),
not(feature = "rtl8139"),
feature = "virtio-net",
),
feature = "fuse",
Expand All @@ -55,7 +55,7 @@ pub mod error {

#[cfg(any(
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
all(target_arch = "x86_64", feature = "rtl8139"),
feature = "rtl8139",
feature = "virtio-net",
feature = "fuse",
feature = "vsock",
Expand All @@ -66,15 +66,15 @@ pub mod error {
#[cfg(any(
all(
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
not(all(target_arch = "x86_64", feature = "rtl8139")),
not(feature = "rtl8139"),
feature = "virtio-net",
),
feature = "fuse",
feature = "vsock",
feature = "console",
))]
InitVirtioDevFail(VirtioError),
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
#[cfg(feature = "rtl8139")]
InitRTL8139DevFail(RTL8139Error),
#[cfg(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")))]
InitGEMDevFail(GEMError),
Expand All @@ -83,7 +83,7 @@ pub mod error {
#[cfg(any(
all(
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
not(all(target_arch = "x86_64", feature = "rtl8139")),
not(feature = "rtl8139"),
feature = "virtio-net",
),
feature = "fuse",
Expand All @@ -96,7 +96,7 @@ pub mod error {
}
}

#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
#[cfg(feature = "rtl8139")]
impl From<RTL8139Error> for DriverError {
fn from(err: RTL8139Error) -> Self {
DriverError::InitRTL8139DevFail(err)
Expand All @@ -112,7 +112,7 @@ pub mod error {

#[cfg(any(
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
all(target_arch = "x86_64", feature = "rtl8139"),
feature = "rtl8139",
feature = "virtio-net",
feature = "fuse",
feature = "vsock",
Expand All @@ -129,7 +129,7 @@ pub mod error {
feature = "gem-net",
not(feature = "pci"),
)),
not(all(target_arch = "x86_64", feature = "rtl8139")),
not(feature = "rtl8139"),
feature = "virtio-net",
),
feature = "fuse",
Expand All @@ -139,7 +139,7 @@ pub mod error {
DriverError::InitVirtioDevFail(ref err) => {
write!(f, "Virtio driver failed: {err:?}")
}
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
#[cfg(feature = "rtl8139")]
DriverError::InitRTL8139DevFail(ref err) => {
write!(f, "RTL8139 driver failed: {err:?}")
}
Expand Down
10 changes: 5 additions & 5 deletions src/drivers/net/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
pub mod gem;
#[cfg(not(any(
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
all(target_arch = "x86_64", feature = "rtl8139"),
feature = "rtl8139",
feature = "virtio-net",
)))]
pub mod loopback;
#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
#[cfg(feature = "rtl8139")]
pub mod rtl8139;
#[cfg(all(
not(all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci"))),
not(all(target_arch = "x86_64", feature = "rtl8139")),
not(feature = "rtl8139"),
feature = "virtio-net",
))]
pub mod virtio;
Expand All @@ -36,7 +36,7 @@ pub(crate) trait NetworkDriver: Driver + smoltcp::phy::Device {
/// or environment variables.
#[cfg(any(
all(target_arch = "riscv64", feature = "gem-net", not(feature = "pci")),
all(target_arch = "x86_64", feature = "rtl8139"),
feature = "rtl8139",
feature = "virtio-net",
))]
pub(crate) fn mtu() -> u16 {
Expand Down Expand Up @@ -69,7 +69,7 @@ cfg_if::cfg_if! {
} else if #[cfg(all(
feature = "pci",
any(
all(target_arch = "x86_64", feature = "rtl8139"),
feature = "rtl8139",
feature = "virtio-net",
),
))] {
Expand Down
Loading