问题标签 [linux-kernel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13912 浏览

linux - linux内核源代码位置

我正在通过 VMware工作Windows和运行。fedora

默认情况下,内核源代码树应该在usr/src/目录中。相反,我只能找到一个名为 kernels 的空目录。那里缺少实际的源代码。

浏览时我认为它可能在其他目录中,例如/boot. 但我在那里也找不到源代码树。

我需要修改我应该能够访问这些源代码的系统调用表。

0 投票
2 回答
1742 浏览

java - 如何使用 Java 程序加载/卸载 Linux 内核模块?

我正在寻找从我的 Java 程序中加载和卸载一个 linux 内核模块。

我最初尝试通过使用 ProcessBuilder 运行命令来执行此操作,但是由于程序没有 root 访问权限,它失败了。以 root 身份运行我的程序也会产生相同的问题,因为它是一个需要 root 访问权限的不同进程。

那么如何在我的程序中获得 root 访问权限,以便允许运行 insmod 和 rmmod。到目前为止,这就是它的样子。

0 投票
2 回答
7847 浏览

linux - linux内核中的PTE结构

我一直在尝试在 linux 源代码中查找与禁用 PAE 的 x86 系统上的 PTE 相对应的结构/联合。到目前为止,我在 arch/x86/include/asm/page_32.h 中只找到了以下内容

我现在有点困惑,因为我面前打开了英特尔参考手册第 3A 卷,并且该联合中的任何内容都与手册中解释的 PTE 中存在的十几个奇数字段相对应。

这可能是一个微不足道的问题,但对我来说,它更像是理解 linux 内核内存管理过程中的绊脚石。

编辑:我有 2.6.29 源

0 投票
2 回答
1822 浏览

multithreading - Linux 内核线程之间的通信

我正在将一个应用程序/PCI 驱动程序从 vxWorks 移植到 Linux,如果可能的话,我希望保持相同的架构。当前驱动程序有 2 个使用消息队列相互通信的任务(线程)。是否有机制在内核线程之间进行通信?消息队列用于传递缓冲区地址和大小信息,因此任务可以使用 DMA 移动大量数据。

0 投票
2 回答
12274 浏览

linux-kernel - 遍历linux内核中的task_struct->children

我正在尝试遍历linux内核中的task_struct的孩子并从孩子那里获取信息。我对所有信息都有疑问,所以为了简单起见,让我们将其保留在获取 pid 上。

这是我的代码的相关部分。

我认为问题出在 list_entry 但我不知道如何解决它,我能找到的所有示例似乎都以相同的方式调用它。

这应该打印出所有子 PID,而不是我总是得到相同的数字 -17.... 它大约是 10^9 或 10^11。

有谁可以帮我离开这里吗?编译大约需要 30 分钟,所以尝试记录不同的东西并不是一个真正的选择。

0 投票
2 回答
6996 浏览

linux - 从 pid 获取 _complete_ 进程名称

我在一个内核模块中,我想从给定的 pid 中获得整个进程名称。确切地说:我想要 /proc/PID/cmdline 中的行。

问题是它只有 15 个字节长,如果程序手动或通过 setproctitle(3)task_struct->comm[]更改它,则无法处理...argv[]

有任何想法吗?:)

0 投票
1 回答
325 浏览

linux-kernel - 您在 Linux 字符驱动程序中将用户上下文存储在哪里?

自从我研究 Linux 内核模块以来已经有一段时间了,我似乎记得在你的 open() 开放实现中有一个存储上下文的地方,它可以在你的其他 file_operations 中使用......例如,如果我想要为了维护与打开我的设备节点的每个人相关的一些状态,如果传递给所有 file_operations 函数的 inode 结构或文件结构有一个我可以填充的 void*,我可以很容易地支持任意数量的用户...... 。 这可能吗?

0 投票
6 回答
11346 浏览

c - 为 Linux 内核开发设置 Netbeans/Eclipse

我正在做一些 Linux 内核开发,并且正在尝试使用 Netbeans。尽管声明支持基于 Make 的 C 项目,但我无法创建功能齐全的 Netbeans 项目。尽管编译时让 Netbeans 分析了一个使用完整调试信息编译的内核二进制文件。问题包括:

  • 文件被错误地排除:一些文件在项目中被错误地显示为灰色,这意味着 Netbeans 不认为它们应该包含在项目中,而实际上它们已编译到内核中。主要问题是 Netbeans 会遗漏这些文件中存在的任何定义,例如数据结构和函数,还会遗漏宏定义。
  • 找不到定义:不言自明 - 通常,Netbeans 找不到某些东西的定义。这部分是上述问题的结果。
  • 找不到头文件:不言自明

我想知道是否有人在为 Linux 内核开发设置 Netbeans 方面取得了成功,如果是,他们使用了哪些设置。最终,我希望 Netbeans 能够解析 Makefile(首选)或从二进制文件中提取调试信息(不太理想,因为这会显着减慢编译速度),并自动确定哪些文件被实际编译,哪些宏实际上是定义的。然后,基于此,我希望能够找到任何数据结构、变量、函数等的定义并具有完整的自动完成功能。

让我用一些观点来作为这个问题的序言:

  • 我对涉及 Vim/Emacs 的解决方案不感兴趣。我知道有些人喜欢他们,但我不是其中之一。
  • 正如标题所暗示的,我也很高兴知道如何设置 Eclipse 来做我需要的事情
  • 虽然我更喜欢完美的覆盖范围,但只漏掉百万分之一的定义显然没问题

SO有用的“相关问题”功能告诉我以下问题是相关的:https ://stackoverflow.com/questions/149321/what-ide-would-be-good-for-linux-kernel-driver-development 。阅读后,问题更多的是 IDE 之间的比较,而我正在寻找如何设置特定的 IDE。即便如此,用户 Wade Mealing 似乎在使用 Eclipse 进行此类开发方面具有一定的专业知识,因此我当然会感谢他(当然还有您的所有)的回答。

干杯

0 投票
1 回答
619 浏览

linux-kernel - CONFIG_ASYNC_XOR 通过 menuconfig/gconfig 不可见

我使用的是 linux 内核版本 2.6.26.8,我需要使用 async_XXX(async_xor、async_memcpy 等)API。所以我需要用我的内核构建 ASYNC_XXX 模块。但是我无法通过安全选项下的 menuconfig 或 gconfig 看到与 ASYNC_XOR 或 ASYNC_MEMCPY 等相关的配置选项。

在 gconfig 中,如果我选择显示所有选项,我可以在“安全选项”下看到这些配置选项,但我无法选择它们。

我不确定这是因为我的配置文件中缺少一些先决条件 CONFIG 选项还是其他原因。我可以直接在配置文件中手动添加这些选项,但我想确保它不会有任何副作用。

我在此处发布我的工作 .config 文件的安全选项部分...

#

安全选项

#

未设置 CONFIG_KEYS

未设置 CONFIG_SECURITY

未设置 CONFIG_SECURITY_FILE_CAPABILITIES

CONFIG_CRYPTO=y

提前谢谢你。

问候, 维卡什·库马尔

0 投票
1 回答
1213 浏览

linux - 编译linux内核时出错

我试图编译 linux 内核,但遇到了一些错误。在运行顶级 Makefile 时,我收到以下错误:-

在构建之前,我配置了使用 make oldconfig

似乎错误日志中的文件应该在配置期间生成。但不知何故,它们没有被生成,因此错误。搜索了网络,但仍然无法修复错误。我对内核编程很陌生。任何帮助将不胜感激。

谢谢。