From 321f708d0f79bf84bb669bcf25db5a33cd303ac2 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 17 Aug 2020 14:39:17 +0200 Subject: [PATCH] vesad: Update redox_syscall --- Cargo.lock | 11 ++++++++++- vesad/Cargo.toml | 2 +- vesad/src/main.rs | 8 ++++---- vesad/src/scheme.rs | 16 ++++++++-------- vesad/src/screen/graphic.rs | 8 ++++---- vesad/src/screen/mod.rs | 2 +- vesad/src/screen/text.rs | 2 +- 7 files changed, 29 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a92ac6aefb..926cbdf962 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -919,6 +919,14 @@ name = "redox_syscall" version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "redox_syscall" +version = "0.2.0" +source = "git+https://gitlab.redox-os.org/redox-os/syscall?rev=4115e0f43547449ce56f7d7749732813e9505955#4115e0f43547449ce56f7d7749732813e9505955" +dependencies = [ + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_syscall" version = "0.2.0" @@ -1286,7 +1294,7 @@ version = "0.1.0" dependencies = [ "orbclient 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", "ransid 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.2.0 (git+https://gitlab.redox-os.org/redox-os/syscall?rev=4115e0f43547449ce56f7d7749732813e9505955)", "rusttype 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1458,6 +1466,7 @@ dependencies = [ "checksum redox_event 0.1.0 (git+https://gitlab.redox-os.org/redox-os/event.git)" = "" "checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" "checksum redox_syscall 0.2.0 (git+https://gitlab.redox-os.org/redox-os/syscall.git)" = "" +"checksum redox_syscall 0.2.0 (git+https://gitlab.redox-os.org/redox-os/syscall?rev=4115e0f43547449ce56f7d7749732813e9505955)" = "" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum rusttype 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d8d729e72445ad579171b01a9231657736b3793a2cf423078e687e20ecb8695a" "checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" diff --git a/vesad/Cargo.toml b/vesad/Cargo.toml index 6223c0672e..83620be64e 100644 --- a/vesad/Cargo.toml +++ b/vesad/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" orbclient = "0.3.27" ransid = "0.4" rusttype = { version = "0.2", optional = true } -redox_syscall = "0.1" +redox_syscall = { git = "https://gitlab.redox-os.org/redox-os/syscall", rev = "4115e0f43547449ce56f7d7749732813e9505955" } [features] default = [] diff --git a/vesad/src/main.rs b/vesad/src/main.rs index 1b78fe7765..28c6cc5f66 100644 --- a/vesad/src/main.rs +++ b/vesad/src/main.rs @@ -38,7 +38,7 @@ fn main() { let physbaseptr; { - let mode_info = unsafe { &*(physmap(0x5200, 4096, 0).expect("vesad: failed to map VBE info") as *const VBEModeInfo) }; + let mode_info = unsafe { &*(physmap(0x5200, 4096, syscall::PhysmapFlags::empty()).expect("vesad: failed to map VBE info") as *const VBEModeInfo) }; width = mode_info.xresolution as usize; height = mode_info.yresolution as usize; @@ -53,7 +53,7 @@ fn main() { syscall::pipe2(&mut pipes, 0).unwrap(); let mut read = unsafe { File::from_raw_fd(pipes[0] as RawFd) }; let mut write = unsafe { File::from_raw_fd(pipes[1] as RawFd) }; - let pid = unsafe { syscall::clone(0).unwrap() }; + let pid = unsafe { syscall::clone(syscall::CloneFlags::empty()).unwrap() }; if pid != 0 { drop(write); @@ -113,7 +113,7 @@ fn main() { } for (handle_id, handle) in scheme.handles.iter_mut() { - if handle.events & EVENT_READ == 0 { + if handle.events.contains(EVENT_READ) { continue; } @@ -135,7 +135,7 @@ fn main() { gid: 0, a: syscall::number::SYS_FEVENT, b: *handle_id, - c: EVENT_READ, + c: EVENT_READ.bits(), d: count }; diff --git a/vesad/src/scheme.rs b/vesad/src/scheme.rs index 46eff7639a..17b392f56e 100644 --- a/vesad/src/scheme.rs +++ b/vesad/src/scheme.rs @@ -2,7 +2,7 @@ use std::collections::BTreeMap; use std::{mem, slice, str}; use orbclient::{Event, EventOption}; -use syscall::{Result, Error, EACCES, EBADF, EINVAL, ENOENT, O_NONBLOCK, Map, SchemeMut}; +use syscall::{Error, EventFlags, EACCES, EBADF, EINVAL, ENOENT, Map, O_NONBLOCK, Result, SchemeMut}; use crate::display::Display; use crate::screen::{Screen, GraphicScreen, TextScreen}; @@ -17,7 +17,7 @@ pub enum HandleKind { pub struct Handle { pub kind: HandleKind, pub flags: usize, - pub events: usize, + pub events: EventFlags, pub notified_read: bool } @@ -81,7 +81,7 @@ impl SchemeMut for DisplayScheme { self.handles.insert(id, Handle { kind: HandleKind::Input, flags: flags, - events: 0, + events: EventFlags::empty(), notified_read: false }); @@ -106,7 +106,7 @@ impl SchemeMut for DisplayScheme { self.handles.insert(id, Handle { kind: HandleKind::Screen(screen_i), flags: flags, - events: 0, + events: EventFlags::empty(), notified_read: false }); @@ -132,14 +132,14 @@ impl SchemeMut for DisplayScheme { Ok(new_id) } - fn fevent(&mut self, id: usize, flags: usize) -> Result { + fn fevent(&mut self, id: usize, flags: syscall::EventFlags) -> Result { let handle = self.handles.get_mut(&id).ok_or(Error::new(EBADF))?; handle.notified_read = false; if let HandleKind::Screen(_screen_i) = handle.kind { handle.events = flags; - Ok(0) + Ok(syscall::EventFlags::empty()) } else { Err(Error::new(EBADF)) } @@ -274,12 +274,12 @@ impl SchemeMut for DisplayScheme { } } - fn seek(&mut self, id: usize, pos: usize, whence: usize) -> Result { + fn seek(&mut self, id: usize, pos: isize, whence: usize) -> Result { let handle = self.handles.get(&id).ok_or(Error::new(EBADF))?; if let HandleKind::Screen(screen_i) = handle.kind { if let Some(screen) = self.screens.get_mut(&screen_i) { - return screen.seek(pos, whence); + return screen.seek(pos, whence).map(|pos| pos as isize); } } diff --git a/vesad/src/screen/graphic.rs b/vesad/src/screen/graphic.rs index 0cb6739594..1f5ac5ea3f 100644 --- a/vesad/src/screen/graphic.rs +++ b/vesad/src/screen/graphic.rs @@ -91,13 +91,13 @@ impl Screen for GraphicScreen { Ok(size * 4) } - fn seek(&mut self, pos: usize, whence: usize) -> Result { + fn seek(&mut self, pos: isize, whence: usize) -> Result { let size = self.display.offscreen.len(); self.seek = match whence { - SEEK_SET => cmp::min(size, pos/4), - SEEK_CUR => cmp::max(0, cmp::min(size as isize, self.seek as isize + (pos/4) as isize)) as usize, - SEEK_END => cmp::max(0, cmp::min(size as isize, size as isize + (pos/4) as isize)) as usize, + SEEK_SET => cmp::min(size, (pos/4) as usize), + SEEK_CUR => cmp::max(0, cmp::min(size as isize, self.seek as isize + (pos/4))) as usize, + SEEK_END => cmp::max(0, cmp::min(size as isize, size as isize + (pos/4))) as usize, _ => return Err(Error::new(EINVAL)) }; diff --git a/vesad/src/screen/mod.rs b/vesad/src/screen/mod.rs index 9983728e5b..a37778ee8f 100644 --- a/vesad/src/screen/mod.rs +++ b/vesad/src/screen/mod.rs @@ -24,7 +24,7 @@ pub trait Screen { fn write(&mut self, buf: &[u8], sync: bool) -> Result; - fn seek(&mut self, pos: usize, whence: usize) -> Result; + fn seek(&mut self, pos: isize, whence: usize) -> Result; fn sync(&mut self); diff --git a/vesad/src/screen/text.rs b/vesad/src/screen/text.rs index 38b7a2976f..9035cb4fad 100644 --- a/vesad/src/screen/text.rs +++ b/vesad/src/screen/text.rs @@ -209,7 +209,7 @@ impl Screen for TextScreen { Ok(buf.len()) } - fn seek(&mut self, _pos: usize, _whence: usize) -> Result { + fn seek(&mut self, _pos: isize, _whence: usize) -> Result { Ok(0) }