Update to perform cloexec in kernel
This commit is contained in:
parent
58b1e57d22
commit
cd5332c973
2
kernel
2
kernel
|
@ -1 +1 @@
|
|||
Subproject commit ea1150cd9b4a06dfbdb32beda634816ec1a93dd4
|
||||
Subproject commit d036c667a1ad7e104cd48846bf6b90961da8c1fb
|
|
@ -1 +1 @@
|
|||
Subproject commit 6c1f476735e11d84b445dc8e60662f94f96434cc
|
||||
Subproject commit 032a45c55242aebaa9f6a03fa9d11da881bfcb1f
|
|
@ -1 +1 @@
|
|||
Subproject commit d77d13743df25c673341153c3c0db199f84efa55
|
||||
Subproject commit 2afa32c5b5e98a6bbf16b323f0ed72e16f2530c3
|
|
@ -1 +1 @@
|
|||
Subproject commit f2bfb0faa19142a34e566f2962544cad1fafb27f
|
||||
Subproject commit 1991d0bbe3f4e5060b9e6878f449619f45d9f595
|
2
rust
2
rust
|
@ -1 +1 @@
|
|||
Subproject commit 28a74299778cdad4ea999e4ee8f8c1ef793338bd
|
||||
Subproject commit 1bc9e5da2367cdeebd86afb4ad1a3d45aae53837
|
|
@ -11,7 +11,7 @@ use std::str;
|
|||
|
||||
use syscall::data::Packet;
|
||||
use syscall::error::{Error, Result, EBADF, EINVAL, ENOENT, EPIPE, EWOULDBLOCK};
|
||||
use syscall::flag::O_NONBLOCK;
|
||||
use syscall::flag::{F_GETFL, F_SETFL, O_ACCMODE, O_NONBLOCK};
|
||||
use syscall::scheme::SchemeMut;
|
||||
|
||||
pub struct PtyScheme {
|
||||
|
@ -102,6 +102,18 @@ impl SchemeMut for PtyScheme {
|
|||
Err(Error::new(EBADF))
|
||||
}
|
||||
|
||||
fn fcntl(&mut self, id: usize, cmd: usize, arg: usize) -> Result<usize> {
|
||||
if let Some(pipe) = self.ptys.0.get_mut(&id) {
|
||||
return pipe.fcntl(cmd, arg);
|
||||
}
|
||||
|
||||
if let Some(pipe) = self.ptys.1.get_mut(&id) {
|
||||
return pipe.fcntl(cmd, arg);
|
||||
}
|
||||
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
|
||||
fn fevent(&mut self, id: usize, _flags: usize) -> Result<usize> {
|
||||
if self.ptys.0.contains_key(&id) || self.ptys.1.contains_key(&id) {
|
||||
Ok(id)
|
||||
|
@ -203,6 +215,17 @@ impl PtyMaster {
|
|||
|
||||
Ok(i)
|
||||
}
|
||||
|
||||
fn fcntl(&mut self, cmd: usize, arg: usize) -> Result<usize> {
|
||||
match cmd {
|
||||
F_GETFL => Ok(self.flags),
|
||||
F_SETFL => {
|
||||
self.flags = arg & ! O_ACCMODE;
|
||||
Ok(0)
|
||||
},
|
||||
_ => Err(Error::new(EINVAL))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Read side of a pipe
|
||||
|
@ -286,6 +309,17 @@ impl PtySlave {
|
|||
Err(Error::new(EPIPE))
|
||||
}
|
||||
}
|
||||
|
||||
fn fcntl(&mut self, cmd: usize, arg: usize) -> Result<usize> {
|
||||
match cmd {
|
||||
F_GETFL => Ok(self.flags),
|
||||
F_SETFL => {
|
||||
self.flags = arg & ! O_ACCMODE;
|
||||
Ok(0)
|
||||
},
|
||||
_ => Err(Error::new(EINVAL))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main(){
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit f418d30dc9c08b9c45b51f335263fd057ca17f33
|
||||
Subproject commit f0c38fe609d666254ec29f6906603c3a3940ee46
|
Loading…
Reference in a new issue