Remove the shim kernel crate

This commit is contained in:
Zhang Junyang
2024-08-19 19:15:22 +08:00
committed by Tate, Hongliang Tian
parent d76c7a5b1e
commit dafd16075f
416 changed files with 231 additions and 273 deletions

39
kernel/src/device/zero.rs Normal file
View File

@ -0,0 +1,39 @@
// SPDX-License-Identifier: MPL-2.0
#![allow(unused_variables)]
use super::*;
use crate::{events::IoEvents, fs::inode_handle::FileIo, prelude::*, process::signal::Poller};
pub struct Zero;
impl Device for Zero {
fn type_(&self) -> DeviceType {
DeviceType::CharDevice
}
fn id(&self) -> DeviceId {
// Same value with Linux
DeviceId::new(1, 5)
}
}
impl FileIo for Zero {
fn read(&self, writer: &mut VmWriter) -> Result<usize> {
// TODO: Use more efficient way when need to read a bunch of zeros once.
let read_len = writer.avail();
for _ in 0..read_len {
writer.write_val(&0u8)?;
}
Ok(read_len)
}
fn write(&self, reader: &mut VmReader) -> Result<usize> {
Ok(reader.remain())
}
fn poll(&self, mask: IoEvents, poller: Option<&mut Poller>) -> IoEvents {
let events = IoEvents::IN | IoEvents::OUT;
events & mask
}
}