1use axfs_vfs::{VfsNodeAttr, VfsNodeOps, VfsNodePerm, VfsNodeType, VfsResult};
2
3pub struct ZeroDev;
7
8impl VfsNodeOps for ZeroDev {
9 fn get_attr(&self) -> VfsResult<VfsNodeAttr> {
10 Ok(VfsNodeAttr::new(
11 VfsNodePerm::default_file(),
12 VfsNodeType::CharDevice,
13 0,
14 0,
15 ))
16 }
17
18 fn read_at(&self, _offset: u64, buf: &mut [u8]) -> VfsResult<usize> {
19 buf.fill(0);
20 Ok(buf.len())
21 }
22
23 fn write_at(&self, _offset: u64, buf: &[u8]) -> VfsResult<usize> {
24 Ok(buf.len())
25 }
26
27 fn truncate(&self, _size: u64) -> VfsResult {
28 Ok(())
29 }
30
31 axfs_vfs::impl_vfs_non_dir_default! {}
32}