Add snake gui app and update os/usr parts. Now snake can run!
This commit is contained in:
parent
b40120f8ff
commit
2cbd237260
14 changed files with 457 additions and 15 deletions
|
@ -131,7 +131,7 @@ pub struct NS16550a<const BASE_ADDR: usize> {
|
|||
|
||||
impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR> {
|
||||
pub fn new() -> Self {
|
||||
let mut inner = NS16550aInner {
|
||||
let inner = NS16550aInner {
|
||||
ns16550a: NS16550aRaw::new(BASE_ADDR),
|
||||
read_buffer: VecDeque::new(),
|
||||
};
|
||||
|
@ -141,6 +141,10 @@ impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR> {
|
|||
condvar: Condvar::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn read_buffer_is_empty(&self) -> bool {
|
||||
self.inner.exclusive_session(|inner| inner.read_buffer.is_empty())
|
||||
}
|
||||
}
|
||||
|
||||
impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR> {
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
use crate::drivers::bus::virtio::VirtioHal;
|
||||
use crate::sync::{Condvar, UPIntrFreeCell};
|
||||
use crate::task::schedule;
|
||||
use alloc::collections::BTreeMap;
|
||||
use alloc::collections::VecDeque;
|
||||
use alloc::sync::Arc;
|
||||
use core::any::Any;
|
||||
use virtio_drivers::{VirtIOHeader, VirtIOInput};
|
||||
use virtio_input_decoder::{Decoder, Key, KeyType};
|
||||
|
||||
const VIRTIO5: usize = 0x10005000;
|
||||
const VIRTIO6: usize = 0x10006000;
|
||||
|
@ -112,7 +110,8 @@ impl InputDevice for VirtIOInputWrapper {
|
|||
| (event.code as u64) << 32
|
||||
| (event.value) as u64;
|
||||
inner.events.push_back(result);
|
||||
println!("[KERN] inputdev_handle_irq: event: {:x}", result);
|
||||
// for test
|
||||
//println!("[KERN] inputdev_handle_irq: event: {:x}", result);
|
||||
}
|
||||
});
|
||||
if count > 0 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue