我试图在内核空间或用户空间中获取给定进程的运行时。 无论如何,这是我想要做的......
//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
为什么输出为零?
答案 0 :(得分:2)
我们将从task->utime
,task->stime
等处获得流程运行时间。
检查功能account_process_tick()
source。
您提到的那个,task->cputime_expires
用于timer_settime()
系统调用以设置POSIX每进程计时器。