1use super::subcats::dev::Devs;
8use super::subcats::vdev::VDevs;
9use super::subcats::sys::Sys;
10use super::subcats::mnt::Mounts;
11use super::subcats::net::Net;
12use super::subcats::ipc::Ipc;
13use super::subcats::sched::Sched;
14use super::subcats::mm::Mm;
15use super::subcats::irq::Irq;
16use super::subcats::time::Time;
17use super::subcats::cpu::Cpu;
18use super::subcats::fs::Fs;
19use super::subcats::procs::Procs;
20
21static KSTATE: KState = KState {
22 devs: Devs {},
23 vdevs: VDevs {},
24 sys: Sys {},
25 mnt: Mounts {},
26 net: Net {},
27 ipc: Ipc {},
28 sched: Sched {},
29 mm: Mm {},
30 irq: Irq {},
31 time: Time {},
32 cpu: Cpu::new(),
33 fs: Fs {},
34 procs: Procs {},
35};
36
37pub struct KState {
39 pub devs: Devs,
40 pub vdevs: VDevs,
41 pub sys: Sys,
42 pub mnt: Mounts,
43 pub net: Net,
44 pub ipc: Ipc,
45 pub sched: Sched,
46 pub mm: Mm,
47 pub irq: Irq,
48 pub time: Time,
49 pub cpu: Cpu,
50 pub fs: Fs,
51 pub procs: Procs,
52}
53
54impl KState {
55 pub fn get() -> &'static Self {
57 &KSTATE
58 }
59}