From 159e86ffe8ba33e76024c2b41305c20b9ace7d30 Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Thu, 16 Jan 2025 18:06:30 +0200 Subject: [PATCH] alnyan/yggdrasil: remove old socket interface --- library/Cargo.lock | 1 + library/std/src/os/yggdrasil/io/mod.rs | 2 +- .../std/src/os/yggdrasil/io/net/raw_socket.rs | 7 ++----- library/std/src/sys/pal/yggdrasil/fd/socket.rs | 18 +++++------------- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/library/Cargo.lock b/library/Cargo.lock index c5b7f77aafe..e59d0671a30 100644 --- a/library/Cargo.lock +++ b/library/Cargo.lock @@ -25,6 +25,7 @@ name = "abi-serde" version = "0.1.0" dependencies = [ "compiler_builtins", + "rustc-std-workspace-alloc", "rustc-std-workspace-core", ] diff --git a/library/std/src/os/yggdrasil/io/mod.rs b/library/std/src/os/yggdrasil/io/mod.rs index 6036d62a218..e77637a398b 100644 --- a/library/std/src/os/yggdrasil/io/mod.rs +++ b/library/std/src/os/yggdrasil/io/mod.rs @@ -4,7 +4,7 @@ pub mod fd; pub mod device; pub mod mapping; -pub mod message_channel; +// pub mod message_channel; pub mod net; pub mod pid; pub mod pipe; diff --git a/library/std/src/os/yggdrasil/io/net/raw_socket.rs b/library/std/src/os/yggdrasil/io/net/raw_socket.rs index 54d7175706b..f9e19c713c3 100644 --- a/library/std/src/os/yggdrasil/io/net/raw_socket.rs +++ b/library/std/src/os/yggdrasil/io/net/raw_socket.rs @@ -1,10 +1,8 @@ #![unstable(feature = "yggdrasil_os", issue = "none")] use yggdrasil_rt::net::{self as rt, SocketInterfaceQuery}; -use yggdrasil_rt::sys as syscall; use crate::io; -use crate::mem::MaybeUninit; use crate::os::fd::{AsRawFd, FromRawFd, RawFd}; use crate::sys::cvt_io; use crate::sys::io::FileDesc; @@ -22,12 +20,11 @@ impl RawSocket { } pub fn send(&self, data: &[u8]) -> io::Result { - cvt_io(unsafe { syscall::send_to(self.0.as_raw_fd(), data, &None) }) + cvt_io(rt::socket::send(self.as_raw_fd(), data)) } pub fn recv(&self, data: &mut [u8]) -> io::Result { - let mut discard = MaybeUninit::uninit(); - cvt_io(unsafe { syscall::receive_from(self.0.as_raw_fd(), data, &mut discard) }) + cvt_io(rt::socket::receive(self.as_raw_fd(), data)) } pub fn hardware_address(&self) -> io::Result<[u8; 6]> { diff --git a/library/std/src/sys/pal/yggdrasil/fd/socket.rs b/library/std/src/sys/pal/yggdrasil/fd/socket.rs index 6a4643de0f4..494f919a99d 100644 --- a/library/std/src/sys/pal/yggdrasil/fd/socket.rs +++ b/library/std/src/sys/pal/yggdrasil/fd/socket.rs @@ -1,7 +1,6 @@ use yggdrasil_rt::{io as rt_io, net as rt, sys as syscall}; use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut}; -use crate::mem::MaybeUninit; use crate::net::{Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr}; use crate::os::fd::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd}; use crate::sys::cvt_io; @@ -146,23 +145,17 @@ impl SocketFileDesc { } pub(crate) fn accept(&self) -> io::Result<(SocketFileDesc, SocketAddr)> { - let mut remote = MaybeUninit::uninit(); - let raw = cvt_io(unsafe { syscall::accept(self.fd.as_raw_fd(), &mut remote) })?; - let remote = unsafe { remote.assume_init() }; + let (raw, remote) = cvt_io(rt::socket::accept_ip(self.as_raw_fd()))?; let fd = unsafe { Self::from_raw_fd(raw) }; Ok((fd, remote)) } pub(crate) fn recv_from(&self, buffer: &mut [u8]) -> io::Result<(usize, SocketAddr)> { - let mut remote = MaybeUninit::uninit(); - let len = - cvt_io(unsafe { syscall::receive_from(self.fd.as_raw_fd(), buffer, &mut remote) })?; - Ok((len, unsafe { remote.assume_init() })) + cvt_io(rt::socket::receive_from_ip(self.as_raw_fd(), buffer)) } pub(crate) fn recv(&self, buffer: &mut [u8]) -> io::Result { - let mut ignore = MaybeUninit::uninit(); - cvt_io(unsafe { syscall::receive_from(self.fd.as_raw_fd(), buffer, &mut ignore) }) + cvt_io(rt::socket::receive(self.as_raw_fd(), buffer)) } pub(crate) fn recv_buf(&self, _buf: BorrowedCursor<'_>) -> io::Result<()> { @@ -182,12 +175,11 @@ impl SocketFileDesc { } pub(crate) fn send(&self, data: &[u8]) -> io::Result { - cvt_io(unsafe { syscall::send_to(self.fd.as_raw_fd(), data, &None) }) + cvt_io(rt::socket::send(self.as_raw_fd(), data)) } pub(crate) fn send_to(&self, data: &[u8], dst: &SocketAddr) -> io::Result { - let dst = Some(*dst); - cvt_io(unsafe { syscall::send_to(self.fd.as_raw_fd(), data, &dst) }) + cvt_io(rt::socket::send_to_ip(self.as_raw_fd(), data, dst)) } pub(crate) fn send_vectored(&self, _data: &[IoSlice<'_>]) -> io::Result {