Articles of 内核模块

只有当它们出现在insmoded Linux Kernel模块中时,如何使用导出的符号?

我正在修改一个Linux内核,将一些function添加到Linux虚拟服务器(LVS)。 我开发了一个模块(我称之为net/netfilter/ipvs/ip_vs_utils.c ),其中包含一些用于负载平衡的function。 这里所有的函数都使用EXPORT_SYMBOL()来导出。 这个模块在逻辑上并不是一直加载。 我的意图是让用户决定是否要使用这个附加function(加载或卸载模块)。 我的问题是,我怎样才能从现有的(当然是修改的)模块( net/netfilter/ipvs/ip_vs_core.c )中OPTIONALLY(取决于模块是否在运行)调用这些函数。 像这样的东西: if(ip_vs_utils_IsLoaded) { function1(arg1, arg2, arg3); // being function1 defined on ip_vs_utils.c }

如何find编译的内核模块的版本?

我处于通过查询加载的模块或.ko文件来查找已加载的内核模块的版本会非常方便的情况。 有没有一个标准的方法来做到这一点, 而不挖掘到源代码?

如何编写内核模块在内核中查找路由表和arpcaching?

我想写一个模块来查找内核中的路由表以获取网关IP,并使用ip查找ARPcaching来获取网关的MAC地址。

LKM:写入设备的最后一个块

我试图在模块内部find一种方法来跟踪写入块设备的最后一个块。 我需要的特定设备是安装在根目录下的设备(如果有帮助,我会提前知道/ dev / name)。 我最初的想法是包装submit_bio函数,因为如果你“echo 1> / proc / sys / vm / block_dump”,它已经有一个日志loggingfunction了。 不幸的是,似乎我需要修改源代码来使该函数成为一个指针。 如果可能的话,我想把这一切都保存在模块中。 之后,我研究了如何find文件系统types,并且包装了默认的文件操作(毕竟它们已经是函数指针了)。 这些被宣布为const,但是,同样的问题。 我明白,这是一件奇怪的事情要做。 需要这样做,无所谓。 有没有人有任何想法,可能会让我走?

在Linux内核模块中监听新进程

是否有可能得到通知(通过callback或类似的)当一个新的进程执行,当一个是closures的,当状态改变(即停止,分页等)? 在user-land中,在/ proc上设置一个目录监听器是很容易的。

如何重命名内核模块名称,而不重命名传递给insmod的.ko。

我需要重命名已有驱动程序的内核模块(使用lsmod显示的名称),而不更改源文件的名称。 例如 # insmod xxx.ko <<module loads successfully>> # lsmod Module Size Used by Tainted: P xxx 191527 0 # 我想把xxx重命名为yyy 。 现在我知道更改驱动程序源文件的名称(当涉及单个文件时)会更改模块的名称。 但我不想更改源文件的名称。

使用模块读取内核内存

作为我的项目的一部分,我需要读取内核来获取系统调用表和系统调用地址的内存地址。 或者实际上我需要提取系统调用表和所有系统调用的内容。 直到现在我使用GDB来达到这个目的。 有没有办法让我可以使用内核模块来做到这一点。 我是新的内核模块编程。 在这里寻找专家的build议。

从用户空间读取内核驱动程序,但写回始终为0

所以我正在努力通过内核驱动程序编程,目前我正试图在应用程序和内核驱动程序之间build立一个简单的数据传输。 我正在使用简单的字符设备作为这两者之间的一个链接,并且我已经成功地将数据传输到了驱动程序,但是我无法获得有意义的数据回到用户空间。 内核驱动程序如下所示: #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> /* printk() */ #include <linux/errno.h> /* error codes */ #include <linux/types.h> /* size_t */ #include <linux/proc_fs.h> #include <asm/uaccess.h> /* copy_from/to_user */ MODULE_LICENSE("GPL"); //Declarations int memory_open(struct inode *inode, struct file *filp); int memory_release(struct inode *inode, struct file *filp); ssize_t memory_read(struct file *filp, char *buf, size_t count, loff_t […]

将驱动程序编译为内核的一部分,而不是作为模块

我正在尝试为embedded式设备创build一个简约的Linux。 这意味着编译内核和驱动程序的必要性。 一个驱动程序是由它的创build者直接写入设备板,所以它不是一个存储库。 它可以被编译为一个内核模块。 但是由于Linux不可变的性质以及对内存使用量极小的要求,我不想使用模块。 我想要内核中的所有驱动程序。 所有提供的内核驱动都是这样设置的。 所以我的问题是如何编译一个特殊的驱动程序到内核? 所有的search都没有给我提供一个解决scheme – 所有的只是作为模块编译。 谢谢你的帮助。

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

我正在开发一个内核模块的使用计数问题。我想打印它的debugging目的。 我怎样才能从模块代码中获得它? 有问题的内核版本 – Linux 2.6.32