linux-kernel相关内容

tty_flip_buffer_push() 将数据发送回自身

我正在尝试在 LDD3 中运行 tiny_tty.当我使用“cat/dev/ttty0"读取时,没有输出,命令被阻塞. 检查跟踪,我注意到 tty_insert_flip_char() 和 tty_flip_buffer_push() 都被调用了.但是,数据不是由 tty 核心发送给用户的.相反,它被发送回 tiny_tty 驱动程序的 tiny_write() 回调函数.有什么问题吗? ..
发布时间:2022-01-04 22:53:47 服务器开发

如何等待linux内核线程(kthread)退出?

我刚刚开始在 Linux 内核线程上编程.我有一个问题想和大家分享.我的代码是: void do_big_things(void *data){//做一些非常大的事情}struct task_struct *t1;struct task_struct *t2;void call_fucntion(){for(j =0; j 现在我对这个问题的结论(我可能是错的)是线程 t1 和 t2 是由内 ..
发布时间:2022-01-04 22:53:05 其他开发

如何创建 100M 字节缓冲区

我正在 Linux 上测试接口的吞吐量.我正在使用 DMA 进行数据传输.DMA 需要连续的内存位置.但是 kmalloc 无法分配超过 1MB 的空间.有没有其他方法可以创建高达 100M Bytes 的大缓冲区位置? 解决方案 我以为 kmalloc 不能分配超过 128kB,你是怎么让它分配 1MB 的? 无论如何,假设您在新启动的系统上工作,您最多可以保留 2048 个连续页 ..
发布时间:2022-01-04 22:52:56 其他开发

如何在两个 Linux 内核模块之间共享全局变量?

我试图在 USB 连接和断开连接时收到通知.所以我正在尝试实现信号.我在 debugfs 中创建了一个文件“file1".然后我提供了一个简单的写文件操作. 在用户空间有一个用户空间应用程序,它将把它的PID写在debugfs的“file1"中. 在内核空间中,我可以使用上面提到的写入方法获取传递的 PID.但我想在不同的内核模块中使用这个 PID.所以我尝试使用 EXPORT_SYM ..
发布时间:2022-01-04 22:52:48 服务器开发

人们将如何生成“人工"?Linux内核中的中断?

我在这里阅读了答案:触发内核中断处理程序:如何?这是一个很好的,但不是我需要的. 我正在对处理中断的 RNG 函数进行微基准测试,因此我需要一种好方法来人为地和可重复地生成中断.例如,我可以将某些内容重定向到 Procfs 接口,该接口会生成 300 个中断或类似内容. 是否像在内核中运行某种产生中断的函数一样简单? 是否有某种类型的中断实际上不做“任何事情",但仍然通过整个中断 ..
发布时间:2022-01-04 22:52:42 服务器开发

原始套接字帮助:为什么内核 UDP 没有接收到原始套接字创建的 UDP 数据包?

我正在研究原始套接字.我使用 IP_HDRINCL 选项来构建我自己的 IP 标头.在 IP 标头之后,我正在构建一个 UDP 标头.然后我将数据包发送到我系统的环回地址.我有另一个程序正在运行,它会在 UDP 数据包到来时捕获它们.为了检查数据包是否正确形成和接收,我有另一个正在读取原始 IP 数据报的进程正在运行.我的问题是,虽然第二个进程(读取原​​始数据报)运行良好(所有 IP 和 UDP ..
发布时间:2022-01-04 22:52:33 其他开发

如何防止“错误:此处未声明‘符号’"尽管在 Linux 内核模块中有 EXPORT_SYMBOL?

当我收到此错误时,我正在将一些驱动程序嵌入到 Linux 内核中(我正在板文件中添加设备并注册它): error: 'kxtf9_get_slave_descr' 未在此处声明(不在函数中) 我在驱动文件中找到了上面的函数 struct ext_slave_descr *kxtf9_get_slave_descr(void){返回 &kxtf9_descr;}出口符号(kxtf9_get_s ..
发布时间:2022-01-04 22:52:26 其他开发

如何直接从 Linux 内核 GIT 存储库中区分文件?

我希望能够直接从 Linux 内核 GIT 存储库中区分文件/目录,而无需下载完整的源代码. 具体来说,我对两种可能的解决方案感兴趣: 能够通过网络浏览器 (firefox) 进行差异化 适用于 Ubuntu 的 GUI 实用程序,可以执行远程差异. 如何设置选项 #2 的教程 编辑 作为我正在寻找的示例,我曾经使用 CrossVC 作为CVS 存储库中的上述任务. ..
发布时间:2022-01-04 22:52:16 其他开发

linux如何用同一个驱动驱动多个网卡?

我最近在学习linux网络驱动,不知道如果我的板上有很多同类型的网卡,内核是如何驱动它们的?内核是否需要多次加载同一个驱动程序?我认为这是不可能的,insmod 不会这样做,那么我怎样才能让所有同类卡片同时工作? 问候 解决方案 每张卡的状态(I/O 地址、IRQ、...)都存储到一个特定于驱动程序的结构中,该结构被传递(直接或间接)到驱动程序的每个入口点,可以通过这种方式区分卡.这 ..
发布时间:2022-01-04 22:52:06 其他开发

在Linux内核空间执行程序

如果我想在 Linux 内核空间中执行用户程序(而不是内核模块),我有哪些选择? 我已经看过 KML(内核模式 linux),但这是特定于 IA-32 架构的.我想要一个跨平台的解决方案,可以在嵌入式 linux 系统上工作. 解决方案 用户程序不在内核空间中执行 - 这就是使它们成为用户程序的原因. 如果您想在内核空间中执行代码,您有两个选择:将其构建到内核中,或者使用内核模 ..
发布时间:2022-01-04 22:51:55 其他开发

来自“Linux内核编程"的源代码示例

正在阅读 Robert Love 的书,关于系统调用的第 5 章,发现这个简单的例子有点问题: asmlinkage long sys_silly_copy(unsigned long *src, unsigned long *dst, unsigned long len){无符号长缓冲区;如果(copy_from_user(&buf,src,len))返回 -EFAULT;...} 正如我们 ..
发布时间:2022-01-04 22:51:49 其他开发

为什么在 sysfs 设备属性文件上对 `poll` 的调用没有正确阻塞?

我有一个简单的 sysfs 设备属性,它显示在我的 sysfs 目录下,并在调用 read 时返回一个内核空间变量.我想在这个属性上调用 poll 以允许我的用户空间线程阻塞,直到属性显示的值发生变化. 我的问题是 poll 似乎没有阻止我的属性——它一直返回 POLLPRI,即使属性显示的值没有改变.事实上,我在内核模块中根本没有调用 sysfs_notify,但用户空间调用 poll 仍 ..

将 jiffies 转换为秒

我有一段用户空间代码,它正在解析/proc/PID/task/TID/stat 以获取 cpu 使用情况.我可以使用 HZ 获得每秒 jiffies,但此代码可以移动到另一台具有不同配置值的机器.有没有办法在运行时从用户空间获取HZ的值? 解决方案 你把它除以你从 sysconf(_SC_CLK_TCK) 得到的数字. 然而,我认为在 Linux 下这可能总是 100,不管实际时钟滴 ..
发布时间:2022-01-04 22:51:29 服务器开发

将 gdb 与/proc/kcore 结合使用时,为什么我的 vmlinux 中没有调试符号?

我已经为 y 配置了所有 CONFIG_DEBUG_ 相关选项,但是当我尝试调试内核时,它说没有找到调试符号: gdb/usr/src/linux-2.6.32.9/vmlinux/proc/kcore从/usr/src/linux-2.6.32.9/vmlinux 读取符号...(未找到调试符号)...完成. 为什么? 解决方案 这是我目前最好的猜测:我不知道,也没关系. 我不 ..
发布时间:2022-01-04 22:51:21 其他开发

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

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

同时拥有 System.map 文件和/proc/kallsyms 有什么需要?

我只想知道System.map文件和/proc/kallsyms的区别. 我正在使用 Linux 3.16 通用内核.我知道两者都是内核符号表.当我对这些文件进行比较时,两者的内容相同. 那么有什么必要同时拥有? 解决方案 /proc/kallsyms 有动态加载模块的符号以及静态代码,System.map 是只有静态代码的符号表. 您无法确定 System.map 在您的系统上 ..
发布时间:2022-01-04 22:51:02 其他开发