我正在尝试在系统调用中实现当前进程的CPU和内存使用信息。 我可以使用:
获取当前进程名称,pid和uidcurrent->comm //process name
current->pid //process id
current_uid() //uid
但似乎是全部。(我使用的是内核3.2.0-24-generic)
正如我从Memory usage of current process in C看到的那样,读取(vfs_read)和解析/proc/pid/status
似乎是获取内存和CPU使用的唯一选择。
有更好的方法来获取这些信息,还是我走在正确的轨道上?
我还首先将我的代码作为内核模块进行测试,因为系统调用和内核模块都在内核空间中运行。这也是不好的做法吗?
答案 0 :(得分:0)
current->mm
是存储所有内存信息的地方
current->mm->mmap
是进程的内存映射列表,因此您可以迭代它并查看在那里找到的内容。
current->utime
和current->stime
可能对获取CPU信息很有用。