kernel-module相关内容
我对Makefile和内核模块非常熟悉,但是最近我的Makefile中出现了一个毫无意义的问题-使用通配符. 为了证明这一点,我从头开始编写一个hello world内核模块. 目录结构是这样的: hello_mod/ | --- hello.c | --- Makefile 这是实际的makefile: CFILES := $(wildcard hell
..
我有一个ARM Linux设备,但没有内核的Makefile来构建内核模块. 我有GCC交叉编译器到这个拱门. 如何在没有内核Makefile的情况下编译内核模块? 解决方案 在没有内核Makefile的情况下如何编译内核模块? 不能.您需要内核Makefile来编译模块,以及预构建的内核源代码树.在大多数发行版中,您可以通过linux-headers-xxx之类的包
..
背景:我正在使用Pixel 4,版本为QQ2A.200501.001.B2,它是Android10.当我从官方来源构建内核并对其进行刷新时,触摸屏,WLAN和其他功能均不起作用.我将其追溯到/vendor/lib/modules中的内核模块未得到更新的事实,因此新内核无法加载其中的任何一个.我尝试只刷新boot.img和整个AOSP,这是相同的问题,它们没有更新.我可以通过手动将构建的内核模块推送
..
最近的Intel和AMD CPU支持特定的 AES指令,可提高加密性能和解密. 是否可以检测何时调用这些指令?例如,通过编写监视发送到CPU的指令的内核模块?还是内核仍处于高级水平? 解决方案 我的理解是,类似 AESENC 不需要特殊特权,因此即使在内核中,也无法使用其中一种常见的错误处理程序来捕获它们.您也许可以使用QEMU或VirtualBox的修改版本来做到这一点,但这会有些
..
我正在将Petalinux用于Xilinx Zynq应用程序,并且是内核驱动程序开发的新手. 我为AXI FIFO接口的平台驱动程序创建了一个内核模块.似乎可以使用.of_match_table从设备树中识别设备,因为我可以看到cat /proc/iomem保留的正确内存空间. 如果我搜索驱动程序名称xxx,我会得到 ./lib/modules/4.4.0-xilinx/extr
..
我是linux内核模块开发中的新手,我正在寻找从内核模块到用户空间进程共享内存段的方法,以避开复制数据的延迟. 我正在使用sys v共享内存api,当我在两个进程之间共享内存时,它可以正常工作,但是我无法在进程和内核模块之间共享内存. bellow是我的内核模块和用户空间应用程序的代码 服务器端:模块 #include // init_mo
..
我必须在内核中打印mem_map变量的内容. 但是,当我通过发出make来编译代码时,我会看到: WARNING: "mem_map" [/home/babak/code/module/mem_map.ko] undefined! 来自: make -C /home/babak/code/linux-3.19.5 M=/home/babak/code/module modul
..
insmod/rmmod无法识别参数.即使没有任何参数的insmod也将被执行.看来系统只能识别命令. 通过insmod命令内核模块可以动态插入,但是当我执行insmod testStub.ko时,什么都没有发生.在lsmod结果中我都看不到我的模块,在dmesg中我写在testStub.c中的任何printk消息也都看不到. lsmod/modprobe -l也不会显示任何输出.
..
我想编写一个模块,其任务是捕获传入的数据包,而不将其发送到用户空间应用程序&对捕获的数据包进行一些修改.然后该模块会将这个数据包发送给NIC. 但是主要问题是我的模块尺寸很大,它也做很多处理.因此,最好在内核模块中进行此处理,否则我们应该传递信息& ;?分组到用户空间进行处理以避免复杂性. &我这样做只是为了非常快速地进行数据包处理. 因此最大程度是linux内核模块可以分配多
..
环境:x86/Ubuntu 14.04 我想获得类似于 的东西 &i2c0 { eeprom: eeprom@50 { compatible = "at,24c32"; reg = ; }; }; 但是因为在x86中没有可用的设备树,所以我遵循Linux内核中的i2c/instantiating-device文档,
..
我正在开发与用户空间程序通信的 Linux内核模块.该模块等待从用户空间发送的消息,以便在内核模式下打印该消息. 这是模块: #include #include #include #include #include #incl
..
我想为我的模块创建一些次要字符驱动程序.我想在/dev/上看到它.但是,我只看到一个驱动程序.我的代码有什么问题?什么是正确的代码? #include #include /** needed by all modules **/ #include /** This is for KERN_AL
..
在遵循本教程以及其他内容的同时([ http://tali.admingilde.org/linux-docbook/writing_usb_driver.pdf][1] )并阅读linux设备驱动程序书中的某些章节,我无法在probe函数中获得pr_debug语句来显示dmesg中的任何输出. 这是我的代码: #include /*includ
..
我正在尝试将内核模块链接到非LKM源文件.问题是,我遇到了一些问题.这两个文件的名称是chardev.c(LKM)和foo.c. 我的Makefile: obj-m += chardev.o obj-y += foo.o all: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules $(CC)
..
我有一个简单的问题:例如,当我必须将结构的内容从用户空间复制到内核空间时,例如使用ioctl调用(或反之亦然)(为简单起见,代码没有错误检查): typedef struct my_struct{ int a; char b; } my_struct; 用户空间: my_struct s; s.a = 11; s.b = 'X'; ioctl(fd, MY_CMD, &s);
..
我正在尝试使用kprobes拦截模块中的以下功能.为此函数传递了"register_kprobe",但调用该函数时未触发Kprobe处理程序. 奇怪的是,如果我在探测函数中打印函数地址,它将开始工作(调用kprobe处理程序).它也适用于内核中的其他功能. 为什么不触发kprobe处理程序,并且打印功能的地址有何不同? 系统在x86_64上安装了3.10内核. 无效的代码:
..
我正在学习内核模块和线程的一些基础知识.因此,我尝试制作一个示例模块并对其进行测试. 现在,它已成功加载. 模块代码: #include #include #include #include #include s
..
我想尝试在Rasperry Pi的Linux内核模块中使用PWM.我已经通过SYSFS接口成功启用了PWM. 对于在内核模块文档中使用pwm的状态: 新用户应使用pwm_get()函数并将其传递给 消费者设备或消费者名称. pwm_put()用于释放PWM 设备.这些函数的托管变体devm_pwm_get()和 devm_pwm_put()也存在. pwm_get函数如下所示:
..
如何在内核空间中过滤和/或显示数据包所来自的接口的名称? 更具体地说,我希望在内核中打印出接口名称,例如eth0,wlan1等. 第二,如何仅从特定接口(例如eth0)过滤数据包? 解决方案 在hook函数中,有参数const struct net_device *in和const struct net_device *out. 您可以通过以下方式打印它: printk(
..
我对内核内部可用的变量有些困惑.我该如何遍历自己内核模块中的所有模块?我发现内核代码中使用了modules.我可以按照以下方式做些什么吗? struct module *mod; list_for_each_entry(mod, &modules, list) { printk(KERN_INFO "%s\n", mod->name); } 解决方案 没有没有直接方法可以遍历模块列表
..