首页 > 解决方案 > 我如何使用 cscope 在 linux 内核中查找 task_struct

问题描述

我正在研究操作系统,尤其是 linux 内核

我说说我的情况。

我在 kernel.org 下载了 linux 内核并获得了一些工具,如 ctags、cscope 并在 vimrc 添加了一些插件,我想,我也编译了内核。文件夹中有 linux-header.deb 和 linux-image.deb,并对 cscope 做了一些操作。所以我得到了 cscope.out 并且我知道命令 cscope -d

现在,我的问题是我可以用 cscope-d 做什么?

我需要找到task_struct和thread_struct,task_struct中thread_struct类型的变量是什么

我不知道我能用 cscope 做什么。有“查找 c 符号”、“全局定义”、“文本字符串”等

当我在“查找此 c 符号”中键入 task_struct 时,有很多头文件。当我在“全局定义”中输入 task_struct 时,也有很多 1)这两者有什么区别?

当我输入标题时,只有一个没有结构细节的语句。2)我错过了什么?或者我需要检查所有的头文件?

它很长,但问题是 1) 和 2) 我需要你的帮助:(

标签: kernelcscope

解决方案


请查看一些现有的文章或帖子,例如此处此处此处

我没有使用 cscope,但我倾向于建议生成标签,特别是因为对于内核,您可以通过简单地从内核源目录的根目录调用“make tags”来生成标签。要跳转到定义,您可以执行 Ctrl + [。您可以在此处查看其余绑定。请注意,更具体地说,这是 ctags 并且无需对 vim 进行任何特殊设置即可工作。

回答您关于“大量头文件”的问题。task_struct 在lockdep.hsched.h中定义,并且根据上下文具有不同的字段和信息。您看到的其余实例,例如在 arch/ 目录中,往往是前向声明。要了解 task_struct,您可能想看看这个

对于前向声明,请参见此处


推荐阅读