From ba661f9719f9f75307cb40a2d0e14f96b438cba4 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Thu, 31 Aug 2023 18:07:47 +0200 Subject: [PATCH] Replace SYS_PIPE2 with libc::pipe in pcid. --- pcid/src/main.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pcid/src/main.rs b/pcid/src/main.rs index bbc92db7b9..2a41da0a3a 100644 --- a/pcid/src/main.rs +++ b/pcid/src/main.rs @@ -466,11 +466,19 @@ fn handle_parsed_header(state: Arc, config: &Config, bus_num: u8, info!("PCID SPAWN {:?}", command); let (pcid_to_client_write, pcid_from_client_read, envs) = if driver.use_channel.unwrap_or(false) { - let mut fds1 = [0usize; 2]; - let mut fds2 = [0usize; 2]; + // TODO: libc wrapper? + let [fds1, fds2] = unsafe { + let mut fds1 = [0 as libc::c_int; 2]; + let mut fds2 = [0 as libc::c_int; 2]; - syscall::pipe2(&mut fds1, 0).expect("pcid: failed to create pcid->client pipe"); - syscall::pipe2(&mut fds2, 0).expect("pcid: failed to create client->pcid pipe"); + assert_eq!(libc::pipe(fds1.as_mut_ptr()), 0, "pcid: failed to create pcid->client pipe"); + assert_eq!(libc::pipe(fds2.as_mut_ptr()), 0, "pcid: failed to create client->pcid pipe"); + + [ + fds1.map(|c| c as usize), + fds2.map(|c| c as usize), + ] + }; let [pcid_to_client_read, pcid_to_client_write] = fds1; let [pcid_from_client_read, pcid_from_client_write] = fds2;