feat: Update netstack to use redox-scheme.

This commit is contained in:
Ibuki Omatsu
2025-12-13 13:44:43 +00:00
committed by Jeremy Soller
parent 3363174937
commit 4f3cba2cd0
10 changed files with 507 additions and 305 deletions
+9 -9
View File
@@ -9,10 +9,10 @@ use syscall::{Error as SyscallError, Result as SyscallResult};
use crate::router::Router;
use super::socket::{Context, DupResult, SchemeFile, SchemeSocket, SocketFile, SocketScheme};
use super::{Smolnetd, SocketSet};
use super::socket::{Context, DupResult, SchemeFile, SchemeSocket, SocketFile};
use super::{SchemeWrapper, Smolnetd, SocketSet};
pub type IpScheme = SocketScheme<RawSocket<'static>>;
pub type IpScheme = SchemeWrapper<RawSocket<'static>>;
impl<'a> SchemeSocket for RawSocket<'a> {
type SchemeDataT = ();
@@ -97,14 +97,14 @@ impl<'a> SchemeSocket for RawSocket<'a> {
&mut self,
file: &mut SocketFile<Self::DataT>,
buf: &[u8],
) -> SyscallResult<Option<usize>> {
) -> SyscallResult<usize> {
if self.can_send() {
self.send_slice(buf).expect("Can't send slice");
Ok(Some(buf.len()))
Ok(buf.len())
} else if file.flags & syscall::O_NONBLOCK == syscall::O_NONBLOCK {
Err(SyscallError::new(syscall::EAGAIN))
} else {
Ok(None) // internally scheduled to re-read
Err(SyscallError::new(syscall::EWOULDBLOCK)) // internally scheduled to re-read
}
}
@@ -112,14 +112,14 @@ impl<'a> SchemeSocket for RawSocket<'a> {
&mut self,
file: &mut SocketFile<Self::DataT>,
buf: &mut [u8],
) -> SyscallResult<Option<usize>> {
) -> SyscallResult<usize> {
if self.can_recv() {
let length = self.recv_slice(buf).expect("Can't receive slice");
Ok(Some(length))
Ok(length)
} else if file.flags & syscall::O_NONBLOCK == syscall::O_NONBLOCK {
Err(SyscallError::new(syscall::EAGAIN))
} else {
Ok(None) // internally scheduled to re-read
Err(SyscallError::new(syscall::EWOULDBLOCK)) // internally scheduled to re-read
}
}