kernel-module相关内容

可让内核模块链接到的标准内核库在哪里?

由于libc在用户空间下运行,因此内核模块无法调用libc. 还有其他一些内核指定的API,就像printk()一样,可以使模块正常工作. 据我了解,libc是几个标准c函数obj的集合. 它应该存在一个包含几个内核标准函数对象的集合(或库). 所以我可以将我的内核模块与这些内核标准库链接起来工作,对吧? 简而言之,我的问题如下... 在用户空间中: aaa.o链接bbb.o ..
发布时间:2020-04-25 11:31:45 服务器开发

从Linux内核模块的文件描述符中获取文件名/路径?

在Linux内核模块中,是否有一种方法可以从unsigned int fd获取文件名/路径? 我知道这个答案:编辑: 请停止重复而不是重复的投票.我正在寻求一种从内核模块中以纯C语言获取文件名/路径的方法,而不是使用系统工具. 换句话说:在/procself/fd/上运行readlink并不是很好的答案. 编辑2: 内核的系统调用读取ssize_t read(int fd, ..
发布时间:2020-04-25 11:31:04 服务器开发

如何检查代码以确保内核之间的模块依赖性-Linux Kernel?

我有两个模块.我希望在执行insmod或rmmod时模块是相互依赖的.当前,我的module2依赖于module1.如果我插入module1,然后插入module2,则可以正常工作.另一方面,相反的做法不起作用.这是合乎逻辑的解释.但是,我想要一个整洁的代码来避免这种依赖性.如果我执行的是mod2的insmod,则mod1应该自动为insmod,或者采用其他合适的方法来解决此问题.这是我的两个模块 ..

没有设备的设备驱动程序?

我正在创建一个需要使用某些内核级模块的应用程序,为此,我将该应用程序分为2个:一个用户级程序和一个内核级程序. 在阅读了有关设备驱动程序并完成了一些教程之后,我有些困惑. 是否存在没有与任何特定设备关联的设备驱动程序?除了设备驱动程序(内核代码等)以外,还有其他可以在内核模式下工作的东西吗? 防病毒程序和其他此类应用程序如何在内核模式下工作?设备驱动程序是正确的方式还是我缺少什么 ..
发布时间:2020-04-25 11:25:39 其他开发

Linux内核模块-创建proc文件-proc_root未声明的错误

我从此URL复制并粘贴代码以使用内核模块创建和读取/写入proc文件,并得到未声明proc_root的错误.相同的示例在一些站点上,因此我认为它可以正常工作.有任何想法为什么我会收到此错误吗?我的makefile是否需要其他内容?以下也是我的makefile: 创建基本proc文件的示例代码(直接复制和粘贴以完成初始测试): http://tldp.org/LDP/lkmpg/2.6/htm ..
发布时间:2020-04-25 11:24:53 其他开发

触发内核中断处理程序:如何?

在此过程中,将如何以及由谁触发内核中断处理程序? 我希望有人可以帮助我更正此问题并澄清我的问题 1)如何以及由谁触发内核中断处理程序? 2)如何定义新的或更改现有的硬件中断处理程序? 先谢谢您! 解决方案 do_IRQ()中中断内核.如果有相应的中断处理程序,它将被执行. 要处理中断,应在request_irq()中注册中断处理程序. ..
发布时间:2020-04-25 11:24:13 其他开发

为什么在Linux内核中忙于循环时,进程被剥夺了CPU时间太长?

乍一看,我的问题可能看起来有些琐碎.请忍受我,并完整阅读. 我在我的Linux内核模块中发现了一个忙循环.因此,其他进程(例如sshd)在很长一段时间内(例如20秒)都无法获得CPU时间.这是可以理解的,因为我的机器只有一个CPU,繁忙循环并没有安排其他进程的机会. 为了实验,我在忙循环中的每次迭代之后都添加了schedule().即使这将使CPU处于繁忙状态,它仍应允许其他进程在我调 ..

Linux内核中的人类可读时间戳

如何在Linux内核中编写人类可读的时间戳?我认为do_gettimeofday返回纪元,但我不想尝试将其转换为可读时间.我只想要Hour:Min:Sec:Msec这样的格式. 谢谢 解决方案 后来的内核具有time_to_tm函数,可以将时间间隔转换为人类可读的格式. 这是一个例子: struct timeval t; struct tm broken; do_gettime ..
发布时间:2020-04-25 11:20:13 其他开发

Linux内核-通过模块动态添加系统调用

有没有办法添加动态系统调用,例如通过模块?我找到了一些地方,可以通过更改sys_call_table[]数组来覆盖模块来覆盖现有的系统调用,以获取覆盖的函数而不是安装模块时的本机函数,但是您可以使用新的系统调用和一个模块? 解决方案 不,sys_call_table具有固定大小: const sys_call_ptr_t sys_call_table[__NR_syscall_max ..
发布时间:2020-04-25 11:18:11 服务器开发

如何配置modprobe来找到我的模块?

我正在尝试让内核模块在引导时加载. 如果我运行insmod /path/to/module.ko,它可以正常工作.但这每次我重新启动时都必须重复. 如果我运行modprobe /path/to/module.ko,它将找不到该模块. 我知道modprobe使用配置文件,但是即使将/path/to/module.ko添加到/etc/modules后,也无法加载该文件. 什么是正确的 ..
发布时间:2020-04-25 11:16:40 其他开发

有没有办法弄清楚正在使用Linux内核模块的原因?

如果我加载内核模块并用lsmod列出已加载的模块,则可以获得模块的“使用计数"(其他模块的数量以及对该模块的引用).但是,有没有办法弄清楚什么正在使用模块? 问题是我正在开发的模块坚持认为其使用计数为1,因此我无法使用rmmod卸载它,但是其"by"列为空.这意味着每次我想重新编译并重新加载模块时,都必须重新启动计算机(或者,至少我无法找到其他方法来卸载它). 解决方案 实际上,似乎 ..
发布时间:2020-04-25 11:16:38 服务器开发

如何在Linux内核2.6中使用CryptoAPI

我一直在寻找一些时间,但是在足够的文档/示例中找不到如何使用linux附带的CryptoAPI来创建syscalls/在内核领域的示例. 如果有人知道一个好的资源,请告诉我,我想知道如何仅在内核空间中做SHA1/MD5和Blowfish/AES. 解决方案 内核中有几个使用加密模块的地方:eCryptfs文件系统(linux/fs/ecryptfs/)和802.11无线协议栈( li ..
发布时间:2020-04-25 11:16:01 其他开发