问题标签 [kernel-module]

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 投票
2 回答
1284 浏览

linux-kernel - file_operations 问题,我如何知道打开文件进行写入的进程是否决定关闭它?

我目前正在编写一个简单的“多播”模块。

只有一个进程可以打开 proc 文件系统文件进行写入,其余进程可以打开它进行读取。为此,我使用 inode_operation .permission 回调,检查操作,当我检测到有人打开文件进行写入时,我将标志设置为 ON。

我需要一种方法来检测打开文件进行写入的进程是否决定关闭文件,以便我可以将标志设置为 OFF,以便其他人可以打开进行写入。

目前,如果有人愿意写作,我会保存该进程的current->pid,当调用 .close 回调时,我会检查该进程是否是我之前保存的进程。

有没有更好的方法来做到这一点?在不保存 pid 的情况下,可能会检查当前进程已打开的文件及其权限...

谢谢!

0 投票
1 回答
101 浏览

linux-kernel - 在 IO 系统中保存信息

我需要使用 /proc 文件系统编写一个模拟“多播”的内核模块。

基本上它需要支持以下场景:

1) 允许对 /proc 文件进行一次写访问和对 /proc 文件进行多次读访问。

2) 模块应该有最后一次成功写入内容的缓冲区。每次写入都应与所有读取器的读取匹配。

考虑场景 2,作者写了一些东西,有两个读者(A 和 B),A 读取缓冲区的内容,然后 A 尝试再次读取,在这种情况下,它应该进入 wait_queue 并等待下一条消息,它不应该再次获得相同的缓冲区。

我需要保留所有已经读取当前缓冲区的 pid 的映射,以防他们再次尝试读取并且缓冲区没有更改,它们应该被阻止,直到有一个新的缓冲区。我试图弄清楚有一种方法可以在没有地图的情况下保存该信息。我听说 I/O 系统中有一些冗余字段,如果它已经读取了当前缓冲区,我可以使用它们来标记进程。

有人可以给我一个提示,我应该在哪里寻找那个领域?如何在不保留 pid 和缓冲区的“地图”的情况下保存当前进程的信息?

谢谢!

0 投票
7 回答
19086 浏览

linux-kernel - 如何从 linux 内核模块中去除本地符号而不破坏它?

如果我这样做--strip-debug--strip-unneeded,我有.ko列出所有函数名称的nm,如果我这样做了,strip foo.ko我有一个拒绝加载的内核模块。

有谁知道快速快捷方式如何删除模块加载不需要的所有符号,以便人们无法轻松地对 API:s 进行逆向工程?

PS:对于所有开源偏执的传教士;这是一般公众在任何情况下都不会使用的东西,因此无需将问题变成 GPL 火焰战。

0 投票
3 回答
383 浏览

linux-kernel - 如何唯一识别尝试打开()内核模块的用户?

我正在研究一个内核模块,我试图唯一地识别每个试图打开()模块的用户(可以是进程或线程)。

识别它们的最佳方法是什么?我可以从系统调用中获得一个 ID 吗?

我希望将所有用户放在一个列表中,该列表指定他们是否尝试打开模块进行读/写,并且我需要知道哪个用户尝试了操作。

0 投票
1 回答
91 浏览

linux-kernel - 内核在收到信号时获取堆栈

我写读者和作家,内核必须在他们之间同步并阻止已经阅读了按摩的作家

当我在队列中等待时,我会收到信号,所以我会休息

}

{ /* *如果我们关闭作者,其他作者*将能够进入权限 */

}

我的 close 什么也没做...

我做错了什么?

0 投票
1 回答
772 浏览

c - linux内核模块中的Linux实模式接口

我有一个需要在嵌入式系统上不时调用的 BIOS 功能,并且使用 LRMI 我能够从用户空间程序中成功调用它。现在我想从一个可加载的内核模块做同样的事情。

有没有办法做到这一点?也许其他一些图书馆?

0 投票
1 回答
269 浏览

linux - CMOS_WRITE 无法工作的可能原因是什么?

几天来,我一直对 RTC 问题感到困惑:我无法写入 RTC 寄存器。

以下是代码片段,我从 reg(最后一行)读取的值总是与我刚刚写入 reg 的值不同。任何人都可以帮助我理解这一点吗?

我使用的是 linux 2.6 内核,我尝试的平台是 PPC 和 x86。

更新: 每个 Amardeep 的评论有更多的代码片段......

0 投票
2 回答
5238 浏览

kernel-module - 如何在内核模块中安装系统调用

我想在一个未使用的地方安装一个新的系统调用并等待来自用户空间的指令。我不知道该怎么做。

0 投票
2 回答
1730 浏览

linux - 如何从 Linux 内核模块获取使用计数?

我对正在开发的内核模块的使用计数有疑问。我想打印它以进行调试。如何从模块代码中获取它?

有问题的内核版本 - Linux 2.6.32

0 投票
2 回答
1639 浏览

linux-kernel - 如何使用 find_module?

如何使用linux内核的find_module()功能?文档说“必须持有 module_mutex”。

  1. 这是否意味着在搜索指向另一个的指针之前我应该​​在我的模块代码中获得一个锁?
  2. 当这个互斥锁被非模块内核代码锁定时?

语境

我正在调试一组一起工作的内核模块。

模块 A 调用模块 B 的函数。在模块 A 的函数 C 中的某个时刻,模块 B 的使用计数变为无效。我已经确定这在模块 B 的函数中没有发生。我想从 C 中调试模块 B 的使用计数。为此,我将使用find_module()来获取指向 B 的指针。