os/uapi/
uts_namespace.rs

1//! 工具函数模块 - UTS 命名空间
2
3use crate::arch::constant::ARCH;
4
5/// UTS 名称最大长度
6pub const UTS_NAME_LEN: usize = 65;
7
8/// UTS 命名空间结构体
9/// 用于隔离不同任务的主机名和域名设置
10#[repr(C)]
11#[derive(Debug, Clone, PartialEq, Eq)]
12pub struct UtsNamespace {
13    /// 系统名称
14    pub sysname: [u8; UTS_NAME_LEN],
15    /// 主机名
16    pub nodename: [u8; UTS_NAME_LEN],
17    /// 发行版版本
18    pub release: [u8; UTS_NAME_LEN],
19    /// 版本信息
20    pub version: [u8; UTS_NAME_LEN],
21    /// 机器类型
22    pub machine: [u8; UTS_NAME_LEN],
23    /// 域名
24    pub domainname: [u8; UTS_NAME_LEN],
25}
26
27impl Default for UtsNamespace {
28    /// 创建一个默认的 UTS 命名空间实例
29    ///
30    /// 默认值为:
31    /// - sysname: "ComixOS"
32    /// - nodename: "localhost"
33    /// - release: "0.1.0"
34    /// - version: "Version 0.1.0"
35    /// - machine: ARCH (架构名称)
36    /// - domainname: "localdomain"
37    fn default() -> Self {
38        Self {
39            nodename: {
40                let mut buf = [0u8; 65];
41                let bytes = "localhost".as_bytes();
42                buf[..bytes.len()].copy_from_slice(bytes);
43                buf
44            },
45            domainname: {
46                let mut buf = [0u8; 65];
47                let bytes = "localdomain".as_bytes();
48                buf[..bytes.len()].copy_from_slice(bytes);
49                buf
50            },
51            sysname: {
52                let mut buf = [0u8; 65];
53                let bytes = "ComixOS".as_bytes();
54                buf[..bytes.len()].copy_from_slice(bytes);
55                buf
56            },
57            release: {
58                let mut buf = [0u8; 65];
59                let bytes = "0.1.0".as_bytes();
60                buf[..bytes.len()].copy_from_slice(bytes);
61                buf
62            },
63            version: {
64                let mut buf = [0u8; 65];
65                let bytes = "Version 0.1.0".as_bytes();
66                buf[..bytes.len()].copy_from_slice(bytes);
67                buf
68            },
69            machine: {
70                let mut buf = [0u8; 65];
71                let bytes = ARCH.as_bytes();
72                buf[..bytes.len()].copy_from_slice(bytes);
73                buf
74            },
75        }
76    }
77}