mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-19 04:56:30 +00:00
feat(procfs): update procfs (#831)
为procfs增加是否是kthread的显示 增加返回进程已经占用的文件描述符数量
This commit is contained in:
@ -157,7 +157,7 @@ impl ProcFSInode {
|
||||
};
|
||||
// 传入数据
|
||||
let pdata: &mut Vec<u8> = &mut pdata.data;
|
||||
|
||||
// name
|
||||
pdata.append(
|
||||
&mut format!("Name:\t{}", pcb.basic().name())
|
||||
.as_bytes()
|
||||
@ -174,17 +174,32 @@ impl ProcFSInode {
|
||||
let priority = sched_info_guard.policy();
|
||||
let vrtime = sched_info_guard.sched_entity.vruntime;
|
||||
|
||||
// State
|
||||
pdata.append(&mut format!("\nState:\t{:?}", state).as_bytes().to_owned());
|
||||
|
||||
// Tgid
|
||||
pdata.append(&mut format!("\nTgid:\t{}", pcb.tgid().into()).into());
|
||||
|
||||
// pid
|
||||
pdata.append(
|
||||
&mut format!("\nPid:\t{}", pcb.pid().into())
|
||||
.as_bytes()
|
||||
.to_owned(),
|
||||
);
|
||||
|
||||
// ppid
|
||||
pdata.append(
|
||||
&mut format!("\nPpid:\t{}", pcb.basic().ppid().into())
|
||||
.as_bytes()
|
||||
.to_owned(),
|
||||
);
|
||||
|
||||
// fdsize
|
||||
pdata.append(&mut format!("\nFDSize:\t{}", pcb.fd_table().read().fd_open_count()).into());
|
||||
|
||||
// kthread
|
||||
pdata.append(&mut format!("\nKthread:\t{}", pcb.is_kthread() as usize).into());
|
||||
|
||||
pdata.append(&mut format!("\ncpu_id:\t{}", cpu_id).as_bytes().to_owned());
|
||||
pdata.append(&mut format!("\npriority:\t{:?}", priority).as_bytes().to_owned());
|
||||
pdata.append(
|
||||
@ -192,6 +207,7 @@ impl ProcFSInode {
|
||||
.as_bytes()
|
||||
.to_owned(),
|
||||
);
|
||||
|
||||
pdata.append(&mut format!("\nvrtime:\t{}", vrtime).as_bytes().to_owned());
|
||||
|
||||
if let Some(user_vm) = pcb.basic().user_vm() {
|
||||
|
@ -573,6 +573,17 @@ impl FileDescriptorVec {
|
||||
return res;
|
||||
}
|
||||
|
||||
/// 返回 `已经打开的` 文件描述符的数量
|
||||
pub fn fd_open_count(&self) -> usize {
|
||||
let mut size = 0;
|
||||
for fd in &self.fds {
|
||||
if fd.is_some() {
|
||||
size += 1;
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
/// @brief 判断文件描述符序号是否合法
|
||||
///
|
||||
/// @return true 合法
|
||||
|
@ -672,6 +672,17 @@ impl ProcessControlBlock {
|
||||
return Self::do_create_pcb(name, kstack, true);
|
||||
}
|
||||
|
||||
/// # 函数的功能
|
||||
///
|
||||
/// 返回此函数是否是内核进程
|
||||
///
|
||||
/// # 返回值
|
||||
///
|
||||
/// 若进程是内核进程则返回true 否则返回false
|
||||
pub fn is_kthread(&self) -> bool {
|
||||
return matches!(self.flags(), &mut ProcessFlags::KTHREAD);
|
||||
}
|
||||
|
||||
#[inline(never)]
|
||||
fn do_create_pcb(name: String, kstack: KernelStack, is_idle: bool) -> Arc<Self> {
|
||||
let (pid, ppid, cwd) = if is_idle {
|
||||
|
Reference in New Issue
Block a user