os/fs/sysfs/builders/
kernel.rs1use alloc::string::ToString;
4use alloc::sync::Arc;
5
6use crate::fs::sysfs::inode::{SysfsAttr, SysfsInode};
7use crate::vfs::{FileMode, FsError, Inode};
8
9pub fn build_kernel_info(root: &Arc<SysfsInode>) -> Result<(), FsError> {
11 let kernel_inode = root.lookup("kernel")?;
12 let kernel_dir = kernel_inode
13 .downcast_ref::<SysfsInode>()
14 .ok_or(FsError::InvalidArgument)?;
15
16 let version_attr = SysfsAttr {
18 name: "version".to_string(),
19 mode: FileMode::from_bits_truncate(0o444),
20 show: Arc::new(|| {
21 Ok("#1 SMP Mon Jan 1 00:00:00 UTC 2025\n".to_string())
23 }),
24 store: None,
25 };
26 kernel_dir.add_child("version", SysfsInode::new_attribute(version_attr))?;
27
28 let osrelease_attr = SysfsAttr {
30 name: "osrelease".to_string(),
31 mode: FileMode::from_bits_truncate(0o444),
32 show: Arc::new(|| {
33 Ok("0.1.0\n".to_string())
35 }),
36 store: None,
37 };
38 kernel_dir.add_child("osrelease", SysfsInode::new_attribute(osrelease_attr))?;
39
40 Ok(())
41}