mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 07:20:10 +01:00
util: rust: update to rustix 1.0.7
Latest tagged release. Fedora uses it, and for it to work on Android we'll need to latest release so a pure libc backend can be used. Reviewed-by: Marcin Radomski <dextero@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35768>
This commit is contained in:
parent
5fbb3817ba
commit
8a2f43c9bd
4 changed files with 26 additions and 20 deletions
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
use std::io::IoSlice;
|
||||
use std::io::IoSliceMut;
|
||||
use std::mem::MaybeUninit;
|
||||
use std::os::fd::AsFd;
|
||||
use std::path::Path;
|
||||
|
||||
|
|
@ -10,8 +11,8 @@ use rustix::cmsg_space;
|
|||
use rustix::fs::fcntl_setfl;
|
||||
use rustix::fs::OFlags;
|
||||
use rustix::net::accept;
|
||||
use rustix::net::bind_unix;
|
||||
use rustix::net::connect_unix;
|
||||
use rustix::net::bind;
|
||||
use rustix::net::connect;
|
||||
use rustix::net::listen;
|
||||
use rustix::net::recvmsg;
|
||||
use rustix::net::sendmsg;
|
||||
|
|
@ -58,7 +59,7 @@ impl Tube {
|
|||
};
|
||||
|
||||
let unix_addr = SocketAddrUnix::new(path)?;
|
||||
connect_unix(&socket, &unix_addr)?;
|
||||
connect(&socket, &unix_addr)?;
|
||||
|
||||
Ok(Tube {
|
||||
socket: socket.into(),
|
||||
|
|
@ -66,7 +67,7 @@ impl Tube {
|
|||
}
|
||||
|
||||
pub fn send(&self, opaque_data: &[u8], descriptors: &[OwnedDescriptor]) -> MesaResult<usize> {
|
||||
let mut space = [0; cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
|
||||
let mut space = [MaybeUninit::<u8>::uninit(); cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
|
||||
let mut cmsg_buffer = SendAncillaryBuffer::new(&mut space);
|
||||
|
||||
let borrowed_fds: Vec<_> = descriptors.iter().map(AsFd::as_fd).collect();
|
||||
|
|
@ -87,7 +88,7 @@ impl Tube {
|
|||
pub fn receive(&self, opaque_data: &mut [u8]) -> MesaResult<(usize, Vec<OwnedDescriptor>)> {
|
||||
let mut iovecs = [IoSliceMut::new(opaque_data)];
|
||||
|
||||
let mut space = [0; cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
|
||||
let mut space = [MaybeUninit::<u8>::uninit(); cmsg_space!(ScmRights(MAX_IDENTIFIERS))];
|
||||
let mut cmsg_buffer = RecvAncillaryBuffer::new(&mut space);
|
||||
let r = recvmsg(
|
||||
&self.socket,
|
||||
|
|
@ -134,7 +135,7 @@ impl Listener {
|
|||
)?;
|
||||
|
||||
let unix_addr = SocketAddrUnix::new(path)?;
|
||||
bind_unix(&socket, &unix_addr)?;
|
||||
bind(&socket, &unix_addr)?;
|
||||
listen(&socket, 128)?;
|
||||
|
||||
fcntl_setfl(&socket, OFlags::NONBLOCK)?;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,10 @@ use std::os::fd::OwnedFd;
|
|||
|
||||
use rustix::event::epoll;
|
||||
use rustix::event::epoll::CreateFlags;
|
||||
use rustix::event::epoll::Event;
|
||||
use rustix::event::epoll::EventData;
|
||||
use rustix::event::epoll::EventFlags;
|
||||
use rustix::event::epoll::EventVec;
|
||||
use rustix::event::Timespec;
|
||||
use rustix::io::Errno;
|
||||
|
||||
use crate::MesaResult;
|
||||
|
|
@ -37,20 +38,24 @@ impl WaitContext {
|
|||
}
|
||||
|
||||
pub fn wait(&mut self, timeout: WaitTimeout) -> MesaResult<Vec<WaitEvent>> {
|
||||
let mut event_vec = EventVec::with_capacity(WAIT_CONTEXT_MAX);
|
||||
let epoll_timeout = match timeout {
|
||||
WaitTimeout::Finite(duration) => duration.as_millis().try_into()?,
|
||||
WaitTimeout::NoTimeout => -1,
|
||||
let mut events_buffer: [epoll::Event; WAIT_CONTEXT_MAX] = [Event {
|
||||
flags: EventFlags::IN,
|
||||
data: EventData::new_u64(0),
|
||||
}; WAIT_CONTEXT_MAX];
|
||||
|
||||
let epoll_timeout: Option<Timespec> = match timeout {
|
||||
WaitTimeout::Finite(duration) => Some(duration.try_into()?),
|
||||
WaitTimeout::NoTimeout => None, // Indefinite wait
|
||||
};
|
||||
|
||||
loop {
|
||||
match epoll::wait(&self.epoll_ctx, &mut event_vec, epoll_timeout) {
|
||||
let num_events = loop {
|
||||
match epoll::wait(&self.epoll_ctx, &mut events_buffer, epoll_timeout.as_ref()) {
|
||||
Err(Errno::INTR) => (), // Continue loop on EINTR
|
||||
result => break result?,
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let events = event_vec
|
||||
let events = events_buffer[..num_events]
|
||||
.iter()
|
||||
.map(|e| {
|
||||
let flags: EventFlags = e.flags;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
project(
|
||||
'rustix',
|
||||
'rust',
|
||||
version : '0.38.31',
|
||||
version : '1.0.7',
|
||||
license : 'Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT',
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[wrap-file]
|
||||
directory = rustix-0.38.31
|
||||
source_url = https://crates.io/api/v1/crates/rustix/0.38.31/download
|
||||
source_filename = rustix-0.38.31.tar.gz
|
||||
source_hash = 6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949
|
||||
directory = rustix-1.0.7
|
||||
source_url = https://crates.io/api/v1/crates/rustix/1.0.7/download
|
||||
source_filename = rustix-1.0.7.tar.gz
|
||||
source_hash = c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266
|
||||
patch_directory = rustix
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue