c - 内核空间中的进程运行时

标签 c linux linux-kernel

我正在尝试获取内核空间或用户空间中给定进程的运行时间。 无论如何,这就是我想要做的......

//suppose struct task_struct *task has a direct link to pid 1
cputime_t ktime = task->cputime_expires.stime;
cputime_t utime = task->cputime_expires.utime;
cputime_t total = ktime + utime;
printk(KERN_INFO "TOTAL [%lu]",total); // 0 

为什么输出为零?

最佳答案

我们将从task->utimetask->stime等获取进程运行时间

检查函数account_process_tick() source .

您提到的那个,即 task->cputime_expires 用于 timer_settime() 系统调用以武装 POSIX 每进程计时器。

关于c - 内核空间中的进程运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045146/

相关文章:

linux - 访问硬件寄存器中的内存指针

c++ - 如何让 CMake 下载外部包并使用它?

C - 变量未编译之前的 While 循环

linux - shell脚本中字符串中的单引号

c++ - Openssl SSL_CTX_new(SSLv3_method()) 返回 NULL

c - POSIX 进程和文件描述符

CFQ理解 `cfq_cfq_cfqq_slice_new(cfqq)`

将 =C3=B6 转换为 ö 假设 UTF-8

c - 如何用C重写文件的全部内容

c - 我们需要在调用 schedule 之前调用 set_current_state(TASK_INTERRUPTIBLE) 吗?