libc_core/resource.rs
1//! This module provides the `libc` types for Resource (system resource management).
2//!
3//! MUSL: <https://github.com/bminor/musl/blob/c47ad25ea3b484e10326f933e927c0bc8cded3da/include/sys/resource.h>
4
5use crate::types::TimeVal;
6
7/// 资源限制结构体(对应 C 的 `struct rlimit`)
8/// 用于描述进程对某种资源的当前限制和最大限制
9#[repr(C)]
10#[cfg_attr(
11 feature = "zerocopy",
12 derive(
13 zerocopy::FromBytes,
14 zerocopy::Immutable,
15 zerocopy::IntoBytes,
16 zerocopy::KnownLayout
17 )
18)]
19#[derive(Debug, Clone, Default)]
20pub struct Rlimit {
21 /// 当前资源软限制(soft limit),即实际生效的限制值
22 /// 进程可以在不超过 `max` 的情况下修改它
23 pub curr: usize,
24 /// 最大资源限制(hard limit),软限制不能超过该值
25 /// 只有具有特权的进程才能提升此值
26 pub max: usize,
27}
28
29/// 资源使用情况结构体(对应 C 的 `struct rusage`)
30/// 记录进程或线程的时间和资源消耗信息
31/// MUSL: <https://github.com/bminor/musl/blob/c47ad25ea3b484e10326f933e927c0bc8cded3da/include/sys/resource.h#L27>
32#[repr(C)]
33#[cfg_attr(
34 feature = "zerocopy",
35 derive(
36 zerocopy::FromBytes,
37 zerocopy::Immutable,
38 zerocopy::IntoBytes,
39 zerocopy::KnownLayout
40 )
41)]
42#[derive(Clone, Default)]
43pub struct Rusage {
44 /// 用户态运行时间(单位:秒 + 微秒)
45 pub utime: TimeVal,
46 /// 内核态运行时间(单位:秒 + 微秒)
47 pub stime: TimeVal,
48 /// 最大常驻集大小(单位:KB),即内存占用峰值
49 pub maxrss: i64,
50 /// 索引页的使用数量(已废弃)
51 pub ixrss: i64,
52 /// 数据段内存使用量(已废弃)
53 pub idrss: i64,
54 /// 堆栈段内存使用量(已废弃)
55 pub isrss: i64,
56 /// 页面缺页异常数(软缺页,不涉及磁盘 IO)
57 pub minflt: i64,
58 /// 主缺页异常数(硬缺页,需要从磁盘读取页面)
59 pub majflt: i64,
60 /// 发生的交换(swap)次数
61 pub nswap: i64,
62 /// 输入操作(块设备读取)的次数
63 pub inblock: i64,
64 /// 输出操作(块设备写入)的次数
65 pub oublock: i64,
66 /// 发送的 IPC 消息数(已废弃)
67 pub msgsnd: i64,
68 /// 接收的 IPC 消息数(已废弃)
69 pub msgrcv: i64,
70 /// 捕获的信号数量
71 pub nsignals: i64,
72 /// 自愿上下文切换次数(如等待锁)
73 pub nvcsw: i64,
74 /// 非自愿上下文切换次数(被内核抢占)
75 pub nivcsw: i64,
76}