kernel-module相关内容
我正在尝试在Ubuntu 21.04和内核v5.11上编译Sangoma的wantube驱动程序v7.0.32,以便与我的A200电话卡一起使用。该驱动程序旨在支持内核5.8。我已经成功地使用5.8内核构建了它,但我更希望能够继续使用5.11内核,这样我就不必降级我的生产服务器。 我缺乏C++知识,无法解决如何在编译wanpie驱动程序时排除‘struct’和";‘’struct F
..
一个名为gcore.ko的内核模块使我的imx6slevk主板在引导时挂起。 此文件的路径为: /lib/modules/4.9.88-imx_4.9.88_2.0.0_ga+g5e23f9d61147/extra/galcore.ko 在手动删除此.ko文件和flashng rootf时,主板可以正常启动。 我想修改yyocto源代码以阻止自动加载此.ko文件。 我已尝试添加 PAC
..
我的内核模块代码需要向用户域程序发送信号,以便将其执行转移到注册的信号处理程序。 事实上,我已经为我的嵌入式板卡开发了一个C程序,当我按下按钮(输入事件)时,LED会亮起和熄灭。另一方面,我刚刚开发了一个简单的Linux模块,包括它的基本功能(打开、关闭、读、写)。 我只是不知道如何修改我的主程序和内核模块以达到我的目标。 我与您分享我的用户空间计划: #include
..
我遵循了一些教程,这些教程解释了如何编写Linux内核模块,我有点困惑。即使看了official "documentation",我对概念的理解也很差。 创建字符设备(register_chrdev)后,我发现使用以下功能组合是很常见的: class_create class_device_create device_create 我不能理解,什么是类、设备和类、设备
..
我一直在查看 net/core/dev.c 和其他文件,试图找出如何获取当前配置的网络设备列表,但事实证明这有点难以找到. 最终目标是能够使用 dev.c 中的 dev_get_stats 获取网络设备统计信息,但我需要知道当前接口,以便获取 net_device 结构以传入.我必须在内核,因为我正在编写一个模块,该模块添加了一个新的/proc/条目,该条目与当前网络设备的一些统计信息相关,
..
我正在为 linux 编写以太网网络驱动程序.我想接收数据包,编辑并重新发送它们.我知道如何在 packet_interceptor 函数中编辑数据包,但是如何在此函数中丢弃传入的数据包?? #include #include #include #include 结构数据包类型我
..
你好 Linux 内核驱动程序大师! 我正在为使用串行接口进行配置的相机编写 v4l2 驱动程序.我希望驱动程序能够配置相机,因为它可以使不同相机型号的客户端代码保持一致.问题是:从驱动程序模块访问相机串行接口的最佳方式是什么? 据我所知,从内核驱动程序访问文件是一个很大的禁忌,但它可以做到.因此,我目前正在使用以下代码片段,但感觉像是一个黑客. oldfs = get_fs();s
..
我正在尝试编译“hello world"内核模块的示例,在 ubuntu 11.04、内核 3.2.6、gcc 4.5.2 和 fedora 16、内核 3.2.7、gcc 4.6.7 上发现的问题. 代码: #include #include MODULE_LICENSE("GPL");静态 int __init hello_init (void){printk("Hello 模块初始化
..
我尝试在 nasm 中编写简单的内核模块 (v3.6),但是 insmod 说我: $ sudo insmod ./hello.koinsmod:错误:无法插入模块 ./hello.ko:模块格式无效$回声 $?1 我编译我的代码: $ nasm -f elf64 -o hello.m hello.asm$ ld -m elf_x86_64 -r -o hello.ko hello.m 和
..
为了我的一些暑期研究,我正在进入内核工作.我们希望在特定的 RTT 计算中对 TCP 进行修改.我想做的是将 tcp_input.c 中的一个函数的解析替换为动态加载的内核模块提供的函数.我认为这会加快我们开发和分发修改的速度. 我感兴趣的函数被声明为静态函数,但是我已经使用非静态函数重新编译了内核并由 EXPORT_SYMBOL 导出.这意味着该函数现在可以被内核的其他模块/部分访问.我已
..
我对 Makefile 和内核模块非常熟悉,但最近我在我的 Makefile 中遇到了一个没有任何意义的问题——使用通配符.为了证明这一点,我正在从头开始编译一个 hello world 内核模块.目录结构是这样的: hello_mod/|- - 你好ç|--- 生成文件 这是实际的makefile: CFILES := $(wildcard hello.c*)#CFILES := hell
..
我阅读了 本指南编写内核模块来做简单的网络过滤. 首先,我不知道下面的文字是什么意思,入站和出站数据包(按传输层)有什么区别? 当一个数据包从线路进入时,它从物理层传输,数据链路层,网络层向上,因此它可能不会通过netfilter 中为 skb_transport_header 定义的函数. 其次,我讨厌幻数,我想用 Linux 内核实用程序中的任何函数(源文件). 任何帮
..
我需要在内核引导期间调用|初始化|探测的模块/驱动程序序列. 能否请您告诉我是否有任何 Flash 命令行选项可用于获取此序列? 解决方案 传递选项“initcall_debug";内核命令行上的 将导致将内置驱动程序的每个 init 例程的计时信息打印到控制台.initcalls 用于初始化静态链接的内核驱动程序和子系统,并为 Linux 引导过程贡献大量时间.(在挂载根文件系统之
..
我写了下面提到的小内核模块代码,我正在 ubuntu 14.04 中测试它 #include #include #include #include int init_mod_func(void){printk(KERN_INFO "我的模块插入\n ");返回0;}void cleanup_mod_func(void){printk(KERN_INFO "我的模块已删除\n ");}模块初始化
..
我正在编写一个内核模块,它依赖于一个现有的内核模块.我正在从树中构建我的模块(作为外部模块). 如何声明依赖项,使其被 depmod 识别? 解决方案 虽然不完全令人满意,但我想出的让 modprobe 工作的最佳方法是向 添加一个条目模块.dep # tail -1 modules.dep../../../../home/ctuffli/mymod/mymod.ko: kerne
..
我在从 Linux 内核模块内部调用系统调用时遇到了一些困难.系统调用已经过标准 c 用户空间程序的测试和正常工作,但我似乎无法让内核模块编译和运行它们. 在我的用户程序中,我包含以下代码并且系统调用有效: #include #define __NR_sys_mycall 343extern long int _syscall(long int_sysno,...)__THROW;//然后
..
我正在尝试在内核 3.13 上编译内核模块,但出现此错误: 错误:函数'create_proc_read_entry'的隐式声明[-Werror=implicit-function-declaration] 我谷歌了一下,没有找到任何回应.这是引用此错误的代码部分: #if (LINUX_VERSION_CODE
..
我正在尝试获取 Linux 内核模块内的电池电量(该模块通过 modprobe 插入).理想情况下,我想使用内核 API 调用来获取电池信息.我在网上搜索了解决方案,我还探索了 Linux 内核源代码和 Michael Meskes 编写的程序“acpi"的源代码. 这些是我认为可以使用的一些技巧: 读取并解析/proc/acpi/battery/BAT0/state和/proc/ac
..
我试图向 linux 内核 3.2.x 添加一个新的系统调用.在互联网上搜索有用的参考资料时,我的印象是不可能像在 SO 问题中那样将系统调用实现为可加载模块 是否可以通过 LKM 添加系统调用? 我找到了另一个链接,上面写着“有一种方法可以添加系统调用,而无需使用模块作为包装器重新编译内核,但这超出了本文档的范围".来源 http://hekimian-williams.com/?p=20
..
remap_pfn_range 函数(用于驱动程序中的mmap 调用)可用于将内核内存映射到用户空间.它是如何完成的?谁能解释一下具体的步骤?内核模式是特权模式(PM),而用户空间是非特权模式(NPM).在 PM CPU 中可以访问所有内存,而在 NPM 中一些内存是受限的 - CPU 无法访问.当 remap_pfn_range 被调用时,那个仅限于 PM 的内存范围现在如何可供用户空间访问?
..