hermit/drivers/net/
mod.rs1#[cfg(all(target_arch = "riscv64", feature = "gem-net"))]
2pub mod gem;
3#[cfg(all(target_arch = "x86_64", feature = "rtl8139"))]
4pub mod rtl8139;
5#[cfg(not(all(target_arch = "x86_64", feature = "rtl8139")))]
6pub mod virtio;
7
8use smoltcp::phy::ChecksumCapabilities;
9
10#[allow(unused_imports)]
11use crate::arch::kernel::core_local::*;
12use crate::drivers::Driver;
13use crate::executor::device::{RxToken, TxToken};
14
15pub(crate) trait NetworkDriver: Driver {
17 fn get_checksums(&self) -> ChecksumCapabilities {
19 ChecksumCapabilities::default()
20 }
21 fn get_mac_address(&self) -> [u8; 6];
23 fn get_mtu(&self) -> u16;
25 fn receive_packet(&mut self) -> Option<(RxToken, TxToken)>;
27 fn send_packet<R, F>(&mut self, len: usize, f: F) -> R
29 where
30 F: FnOnce(&mut [u8]) -> R;
31 #[allow(dead_code)]
33 fn has_packet(&self) -> bool;
34 fn set_polling_mode(&mut self, value: bool);
36 fn handle_interrupt(&mut self);
38}