From b6cc9f2ebdf4873fa0e1df24795d03071c54d795 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 18 Jul 2019 20:22:38 -0600 Subject: [PATCH] Mount chan and shm O_NONBLOCK --- src/chan.rs | 12 +++++++++--- src/shm.rs | 14 ++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/chan.rs b/src/chan.rs index 0378d0099a..38df91fca7 100644 --- a/src/chan.rs +++ b/src/chan.rs @@ -2,8 +2,9 @@ use crate::post_fevent; use std::{ cmp, collections::{HashMap, VecDeque}, - fs::File, - io + fs::{File, OpenOptions}, + io, + os::unix::fs::OpenOptionsExt, }; use syscall::{flag::*, error::*, Error, SchemeBlockMut, Result}; @@ -102,7 +103,12 @@ impl ChanScheme { handles: HashMap::new(), listeners: HashMap::new(), next_id: 0, - socket: File::create(":chan")? + socket: OpenOptions::new() + .read(true) + .write(true) + .create(true) + .custom_flags(O_NONBLOCK as i32) + .open(":chan")? }) } } diff --git a/src/shm.rs b/src/shm.rs index a11b34e463..2a9a081364 100644 --- a/src/shm.rs +++ b/src/shm.rs @@ -1,11 +1,12 @@ use std::{ cmp, collections::{HashMap, hash_map::Entry}, - fs::File, + fs::{File, OpenOptions}, io, - rc::Rc + os::unix::fs::OpenOptionsExt, + rc::Rc, }; -use syscall::{error::*, Error, Map, SchemeMut, Result}; +use syscall::{error::*, flag::O_NONBLOCK, Error, Map, SchemeMut, Result}; #[derive(Default)] pub struct ShmHandle { @@ -24,7 +25,12 @@ impl ShmScheme { maps: HashMap::new(), handles: HashMap::new(), next_id: 0, - socket: File::create(":shm")? + socket: OpenOptions::new() + .read(true) + .write(true) + .create(true) + .custom_flags(O_NONBLOCK as i32) + .open(":shm")? }) } }