kernel-module相关内容

使用 kretprobes 后处理程序获取系统调用参数

我想在这些系统调用返回后立即使用 LKM 跟踪 sys_connect 和 sys_accept.我发现当被探测的系统调用返回时,kprobes 可以让你访问寄存器,通过定义一个后处理程序. 我的问题是我不知道如何从我在后处理程序(即结构 pt_regs)中的数据中获取系统调用参数后处理程序定义如下: void post_handler(struct kprobe *p, struct p ..
发布时间:2021-11-17 02:43:07 其他开发

如何在树外内核模块中为make headers_install指定头文件?

我在kbuild 模块中找不到与此有关的任何信息.文档和 headers_install 中只有一个斜引用(建议可能).文档. "make headers_install"命令可以在以下目录的顶级目录中运行内核源代码(或使用标准的树外构建). 我有一个树外内核模块和一个关联的头文件(我对IOCTL有#defines),并且我想在模块安装过程中提供该头文件.内核模块提供头文件(供用户空间 ..
发布时间:2021-05-28 19:19:36 其他开发

内核模块如何卸载自身而不在内核日志中生成错误?

我已经制作了一个简单的模块,该模块在加载时会打印GDT和IDT.完成工作后,就不再需要它并且可以将其卸载.但是,如果它返回负数以停止加载,则insmod会抱怨,并且错误消息将记录在内核日志中. 内核模块如何优雅地卸载自身? 解决方案 据我所知,使用普通内核是不可能的(您可以按照下面所述修改模块加载器内核,但这可能不是一个好方法.依靠的东西.) 好的,所以我看了一下模块的加载和卸 ..
发布时间:2021-02-14 21:12:07 服务器开发

C-Linux-遍历进程子进程的自定义内核模块会炸毁内核日志和计算机

我是Linux内核模块的新手,在尝试处理一些复杂的概念之前,我正在尝试实现一些基本概念.我编写了一个代码,该代码带有一个模块参数(一个int),并检查是否有带有该pid的进程.如果存在,则将其子项作为列表,并在打印子项的ID和说明时对其进行迭代.这是代码: #include #include #include ..
发布时间:2021-02-14 21:12:04 服务器开发

用可加载模块替换内核内置模块

我已经开发了一个内核模块,用于将nf4标签作为char设备进行管理. 我已经在内核外部开发了该模块,并在开发阶段对其进行了测试,并将其编译为可加载的内核模块(即.ko). 一旦驱动程序正常运行并足够稳定,我便会使用补丁将其插入Linux内核源代码(v4.9.30),以便将其构建为内核的一部分. 在这种情况下,由于模块是内置的,因此会在启动时由内核对其进行加载探测,并出现在设备树中 ..

获取内核模块中的所有安装点

我正在尝试获取内核模块中的所有挂载点.以下是我想出的.由于strcat而导致段错误.这是获取挂载点的正确方法吗?这会工作吗?如果是的话,我该如何修复段错误?如果没有,如何在Linux内核模块中获取挂载点? 我已经尝试过循环整个命名空间,以查找挂载点根匹配,但是从2003年开始,内核发生了很大变化,因此基本上没有用.还尝试了在内核模块中获取文件系统挂载点,但是从2012年起再次使用它,因此它已 ..
发布时间:2021-02-14 21:11:58 服务器开发

"get_user_pages"如何工作(对于Linux驱动程序)

正在使用Linux PCI驱动程序,现在我正尝试使用分散/收集功能为DMA编写代码. 到目前为止,我了解到,要直接从用户空间访问DMA数据,我们需要将用户空间页面固定到内核空间. 为此,我们有get_user_pages,其完整定义如下: int get_user_pages(struct task_struct * tsk, struct mm_struct * m ..

在内核模块中获取NFS客户端IP地址

我正在研究内核模块,以跟踪服务器上NFS客户端执行的操作. 我可以使用黑客方式(劫持vfs层)来拦截文件操作,但无法获取客户端的IP地址. current任务中是否可以存储任何信息,我可以使用这些信息来获取执行操作的NFS客户端的IP地址? 通过深入研究源代码,我知道nfsd在struct super_block的s_fs_info字段中存储了struct nfsd_net,但是我只能 ..
发布时间:2021-02-14 21:11:26 其他开发

从驱动程序禁用NIC卡中的中断是否会停止数据包接收

在rtl驱动程序中,我试图研究在哪个init函数(pci_driver探测函数相同)中禁用irq. 所以我的问题是:如果我禁用中断,那么NAPI(新API)是否起作用,或者它也基本停止运行,以至于我注意到intel以太网设备驱动程序中的作用. 所以问题是为什么禁用中断很有用. Interrut与新API不同.如果不同,则如何启用NAPI(新API)数据包接收. 是否有任何内 ..

尝试使用Shell脚本查找我的机器所需的所有内核模块

我现在正在开发内核模块,构建时间已经开始深入人心了.作为副作用,我在构建过程中占用了太多的“咖啡"时间. 因此,我一直在寻找一种仅构建平台所需材料的方法. “简而言之,Linux内核"的第7章和第8章详细介绍了如何手动执行该操作.很好读: http://www.kroah.com/lkn/ 但是,尽管我了解这些内容,但仍然需要进行很多调整才能使其正常工作. 2.6.32和更高版本 ..
发布时间:2021-02-14 21:06:59 服务器开发