C 中是否有函数可以在 Linux 上获取当前进程的虚拟运行时?



TL;DR:最好的方法是什么:

  1. 获取当前流程;
  2. 访问其印刷电路板;
  3. 访问并返回其vruntime值?

我正在尝试实现一个新的系统调用(在 C 中(,它将返回当前进程的虚拟运行时。
虚拟运行时存储在进程PCB的vruntime字段中,但我找不到如何访问它。

我一直在尝试找到一种使用进程的 PID 或进程名称本身的方法,但没有成功。 有没有办法将流程作为struct task_struct变量并访问vruntime字段?

已经有一个,getrusage(RUSAGE_SELF, &rusage),在kernel/sys.c:getrusage((中实现。

您的系统调用将在调用它的线程的上下文中以内核模式运行,因此以下表达式将获取当前进程task_struct:

current_thread_info() -> task

然后,您可以使用copy_to_user或类似内容将 vruntime 字段读取到用户提供的缓冲区,以确保来自调用方的不受信任地址的安全。

相关内容

  • 没有找到相关文章

最新更新