axfs_devfs/
null.rs

1use axfs_vfs::{VfsNodeAttr, VfsNodeOps, VfsNodePerm, VfsNodeType, VfsResult};
2
3/// A null device behaves like `/dev/null`.
4///
5/// Nothing can be read and all writes are discarded.
6pub struct NullDev;
7
8impl VfsNodeOps for NullDev {
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        Ok(0)
20    }
21
22    fn write_at(&self, _offset: u64, buf: &[u8]) -> VfsResult<usize> {
23        Ok(buf.len())
24    }
25
26    fn truncate(&self, _size: u64) -> VfsResult {
27        Ok(())
28    }
29
30    axfs_vfs::impl_vfs_non_dir_default! {}
31}