kernel-module相关内容

在内核5.11上编译wanpiet驱动程序

我正在尝试在Ubuntu 21.04和内核v5.11上编译Sangoma的wantube驱动程序v7.0.32,以便与我的A200电话卡一起使用。该驱动程序旨在支持内核5.8。我已经成功地使用5.8内核构建了它,但我更希望能够继续使用5.11内核,这样我就不必降级我的生产服务器。 我缺乏C++知识,无法解决如何在编译wanpie驱动程序时排除‘struct’和";‘’struct F ..
发布时间:2022-05-30 13:29:37 C/C++开发

如何从Linux内核空间向用户空间发送信号以通知输入硬件事件

我的内核模块代码需要向用户域程序发送信号,以便将其执行转移到注册的信号处理程序。 事实上,我已经为我的嵌入式板卡开发了一个C程序,当我按下按钮(输入事件)时,LED会亮起和熄灭。另一方面,我刚刚开发了一个简单的Linux模块,包括它的基本功能(打开、关闭、读、写)。 我只是不知道如何修改我的主程序和内核模块以达到我的目标。 我与您分享我的用户空间计划: #include ..

班级和班级装置的用途是什么?

我遵循了一些教程,这些教程解释了如何编写Linux内核模块,我有点困惑。即使看了official "documentation",我对概念的理解也很差。 创建字符设备(register_chrdev)后,我发现使用以下功能组合是很常见的: class_create class_device_create device_create 我不能理解,什么是类、设备和类、设备 ..

获取 Linux 内核中的网络设备列表

我一直在查看 net/core/dev.c 和其他文件,试图找出如何获取当前配置的网络设备列表,但事实证明这有点难以找到. 最终目标是能够使用 dev.c 中的 dev_get_stats 获取网络设备统计信息,但我需要知道当前接口,以便获取 net_device 结构以传入.我必须在内核,因为我正在编写一个模块,该模块添加了一个新的/proc/条目,该条目与当前网络设备的一些统计信息相关, ..

从 linux 内核模块访问串行端口

你好 Linux 内核驱动程序大师! 我正在为使用串行接口进行配置的相机编写 v4l2 驱动程序.我希望驱动程序能够配置相机,因为它可以使不同相机型号的客户端代码保持一致.问题是:从驱动程序模块访问相机串行接口的最佳方式是什么? 据我所知,从内核驱动程序访问文件是一个很大的禁忌,但它可以做到.因此,我目前正在使用以下代码片段,但感觉像是一个黑客. oldfs = get_fs();s ..

我可以用模块替换 Linux 内核函数吗?

为了我的一些暑期研究,我正在进入内核工作.我们希望在特定的 RTT 计算中对 TCP 进行修改.我想做的是将 tcp_input.c 中的一个函数的解析替换为动态加载的内核模块提供的函数.我认为这会加快我们开发和分发修改的速度. 我感兴趣的函数被声明为静态函数,但是我已经使用非静态函数重新编译了内核并由 EXPORT_SYMBOL 导出.这意味着该函数现在可以被内核的其他模块/部分访问.我已 ..
发布时间:2022-01-04 22:41:01 服务器开发

不能在内核模块生成文件中使用通配符

我对 Makefile 和内核模块非常熟悉,但最近我在我的 Makefile 中遇到了一个没有任何意义的问题——使用通配符.为了证明这一点,我正在从头开始编译一个 hello world 内核模块.目录结构是这样的: hello_mod/|- - 你好ç|--- 生成文件 这是实际的makefile: CFILES := $(wildcard hello.c*)#CFILES := hell ..
发布时间:2022-01-04 22:36:22 服务器开发

类似 netfilter 的内核模块来获取源地址和目标地址

我阅读了 本指南编写内核模块来做简单的网络过滤. 首先,我不知道下面的文字是什么意思,入站和出站数据包(按传输层)有什么区别? 当一个数据包从线路进入时,它从物理层传输,数据链路层,网络层向上,因此它可能不会通过netfilter 中为 skb_transport_header 定义的函数. 其次,我讨厌幻数,我想用 Linux 内核实用程序中的任何函数(源文件). 任何帮 ..
发布时间:2022-01-04 22:36:00 服务器开发

如何获取在 Linux 内核启动期间初始化/探测的所有模块/驱动程序的详细信息?

我需要在内核引导期间调用|初始化|探测的模块/驱动程序序列. 能否请您告诉我是否有任何 Flash 命令行选项可用于获取此序列? 解决方案 传递选项“initcall_debug";内核命令行上的 将导致将内置驱动程序的每个 init 例程的计时信息打印到控制台.initcalls 用于初始化静态链接的内核驱动程序和子系统,并为 Linux 引导过程贡献大量时间.(在挂载根文件系统之 ..

如何使用 depmod 使一个 Linux 内核模块依赖于另一个外部模块?

我正在编写一个内核模块,它依赖于一个现有的内核模块.我正在从树中构建我的模块(作为外部模块). 如何声明依赖项,使其被 depmod 识别? 解决方案 虽然不完全令人满意,但我想出的让 modprobe 工作的最佳方法是向 添加一个条目模块.dep # tail -1 modules.dep../../../../home/ctuffli/mymod/mymod.ko: kerne ..
发布时间:2022-01-04 22:33:41 服务器开发

如何使用来自 Linux 内核模块的 Linux 系统调用

我在从 Linux 内核模块内部调用系统调用时遇到了一些困难.系统调用已经过标准 c 用户空间程序的测试和正常工作,但我似乎无法让内核模块编译和运行它们. 在我的用户程序中,我包含以下代码并且系统调用有效: #include #define __NR_sys_mycall 343extern long int _syscall(long int_sysno,...)__THROW;//然后 ..
发布时间:2022-01-04 22:32:28 其他开发

如何获取 Linux 内核模块内的电池电量?

我正在尝试获取 Linux 内核模块内的电池电量(该模块通过 modprobe 插入).理想情况下,我想使用内核 API 调用来获取电池信息.我在网上搜索了解决方案,我还探索了 Linux 内核源代码和 Michael Meskes 编写的程序“acpi"的源代码. 这些是我认为可以使用的一些技巧: 读取并解析/proc/acpi/battery/BAT0/state和/proc/ac ..
发布时间:2022-01-04 22:28:55 其他开发

使用 LKM 实现 Linux 系统调用

我试图向 linux 内核 3.2.x 添加一个新的系统调用.在互联网上搜索有用的参考资料时,我的印象是不可能像在 SO 问题中那样将系统调用实现为可加载模块 是否可以通过 LKM 添加系统调用? 我找到了另一个链接,上面写着“有一种方法可以添加系统调用,而无需使用模块作为包装器重新编译内核,但这超出了本文档的范围".来源 http://hekimian-williams.com/?p=20 ..
发布时间:2022-01-04 22:28:13 其他开发

remap_pfn_range 如何将内核内存重新映射到用户空间?

remap_pfn_range 函数(用于驱动程序中的mmap 调用)可用于将内核内存映射到用户空间.它是如何完成的?谁能解释一下具体的步骤?内核模式是特权模式(PM),而用户空间是非特权模式(NPM).在 PM CPU 中可以访问所有内存,而在 NPM 中一些内存是受限的 - CPU 无法访问.当 remap_pfn_range 被调用时,那个仅限于 PM 的内存范围现在如何可供用户空间访问? ..