starnix_core/fs/sysfs/
kernel_directory.rs1use crate::task::Kernel;
6use crate::vfs::pseudo::simple_directory::SimpleDirectoryMutator;
7use crate::vfs::pseudo::simple_file::create_bytes_file_with_handler;
8use crate::vfs::pseudo::stub_empty_file::StubEmptyFile;
9use starnix_logging::bug_ref;
10use starnix_uapi::file_mode::mode;
11
12pub fn build_kernel_directory(kernel: &Kernel, dir: &SimpleDirectoryMutator) {
15 let dir_mode = 0o755;
16 dir.subdir("debug", dir_mode, |_| ());
17 dir.subdir("tracing", dir_mode, |_| ());
18 dir.subdir("wakeup_reasons", dir_mode, |dir| {
19 let read_only_file_mode = mode!(IFREG, 0o444);
20 dir.entry(
21 "last_resume_reason",
22 create_bytes_file_with_handler(kernel.weak_self.clone(), |kernel| {
23 kernel.suspend_resume_manager.suspend_stats().last_resume_reason.unwrap_or_default()
24 }),
25 read_only_file_mode,
26 );
27 dir.entry(
28 "last_suspend_time",
29 create_bytes_file_with_handler(kernel.weak_self.clone(), |kernel| {
30 let suspend_stats = kernel.suspend_resume_manager.suspend_stats();
31 format!(
34 "{} {}",
35 suspend_stats.last_time_in_suspend_operations.into_seconds_f64(),
36 suspend_stats.last_time_in_sleep.into_seconds_f64()
37 )
38 }),
39 read_only_file_mode,
40 );
41 });
42
43 dir.subdir("fs", dir_mode, |dir| {
44 dir.subdir("cgroup", dir_mode, |dir| {
45 dir.entry(
46 "cgroup.subtree_control",
47 StubEmptyFile::new_node(bug_ref!("https://fxbug.dev/452096300")),
48 mode!(IFREG, 0o644),
49 );
50 for name in ["apps", "system"] {
51 dir.subdir(name, dir_mode, |dir| {
52 dir.entry(
53 "cgroup.subtree_control",
54 StubEmptyFile::new_node(bug_ref!("https://fxbug.dev/452096300")),
55 mode!(IFREG, 0o644),
56 );
57 });
58 }
59 });
60 });
61 dir.subdir("dmabuf", dir_mode, |dir| {
62 dir.subdir("buffers", dir_mode, |_| {});
64 });
65 dir.subdir("mm", dir_mode, |dir| {
66 dir.entry(
67 "cma",
68 StubEmptyFile::new_node(bug_ref!("https://fxbug.dev/452096300")),
69 mode!(IFREG, 0o444),
70 );
71 dir.subdir("lru_gen", dir_mode, |dir| {
72 dir.entry(
73 "enabled",
74 StubEmptyFile::new_node(bug_ref!("https://fxbug.dev/452096300")),
75 mode!(IFREG, 0o644),
76 );
77 });
78 dir.subdir("pgsize_migration", dir_mode, |dir| {
79 dir.entry(
80 "enabled",
81 StubEmptyFile::new_node(bug_ref!("https://fxbug.dev/452096300")),
82 mode!(IFREG, 0o644),
83 );
84 });
85 dir.subdir("transparent_hugepage", dir_mode, |dir| {
86 dir.entry(
87 "enabled",
88 StubEmptyFile::new_node(bug_ref!("https://fxbug.dev/322894184")),
89 mode!(IFREG, 0o644),
90 );
91 });
92 });
93}