From 255982a8b7212d130eb2b006a02c673555f6f6b1 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 20 Mar 2020 13:03:41 +0100 Subject: [PATCH] Implement scancode queue --- Cargo.lock | 49 +++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 8 ++++++++ src/task/keyboard.rs | 4 ++++ src/task/mod.rs | 1 + 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/task/keyboard.rs diff --git a/Cargo.lock b/Cargo.lock index 6fd77842..ad1356c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,11 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "autocfg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" + [[package]] name = "bit_field" version = "0.9.0" @@ -17,6 +23,8 @@ name = "blog_os" version = "0.1.0" dependencies = [ "bootloader", + "conquer-once", + "crossbeam-queue", "lazy_static", "linked_list_allocator", "pc-keyboard", @@ -30,8 +38,27 @@ dependencies = [ [[package]] name = "bootloader" version = "0.8.8" + +[[package]] +name = "cfg-if" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ed4f735c4e455ba86a3d2939b1c0729414153642106c9d035693355630a42c" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "conquer-once" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7644600a548ecad74e4a918392af1798f7dd045be610be3203b9e129b4f98f" +dependencies = [ + "conquer-util", +] + +[[package]] +name = "conquer-util" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654fb2472cc369d311c547103a1fa81d467bef370ae7a0680f65939895b1182a" [[package]] name = "cpuio" @@ -39,6 +66,26 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22b8e308ccfc5acf3b82f79c0eac444cf6114cb2ac67a230ca6c177210068daa" +[[package]] +name = "crossbeam-queue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if", +] + [[package]] name = "lazy_static" version = "1.4.0" diff --git a/Cargo.toml b/Cargo.toml index 62165b49..39198cd9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,14 @@ linked_list_allocator = "0.8.0" version = "1.0" features = ["spin_no_std"] +[dependencies.crossbeam-queue] +version = "0.2.1" +default-features = false +features = ["alloc"] + +[dependencies.conquer-once] +version = "0.2.0" +default-features = false [package.metadata.bootimage] test-args = [ diff --git a/src/task/keyboard.rs b/src/task/keyboard.rs new file mode 100644 index 00000000..68f0029a --- /dev/null +++ b/src/task/keyboard.rs @@ -0,0 +1,4 @@ +use conquer_once::spin::OnceCell; +use crossbeam_queue::ArrayQueue; + +static SCANCODE_QUEUE: OnceCell> = OnceCell::uninit(); diff --git a/src/task/mod.rs b/src/task/mod.rs index d55e2a4e..cfd1c1e9 100644 --- a/src/task/mod.rs +++ b/src/task/mod.rs @@ -2,6 +2,7 @@ use alloc::boxed::Box; use core::task::{Context, Poll}; use core::{future::Future, pin::Pin}; +pub mod keyboard; pub mod simple_executor; pub struct Task {