问题标签 [linux-device-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6797 浏览

linux-kernel - 如何查找 unregister_chrdev() 调用是否成功

来自 [linux\fs.h] 的 unregister_chrdev() 调用如果成功则返回 0,否则返回 <0。但是现在,在较新的内核版本中,函数的返回值已更改为 void,因此它不再返回任何内容。

问题:有什么方法可以查明 unregister_chrdev() 调用是否成功?

0 投票
1 回答
2609 浏览

linux-kernel - 何时使用 /proc 以及何时使用 /dev

我需要编写一个不是设备驱动程序的内核模块。该模块将与一些用户空间进程进行通信。因为我不想使用 ioctl(),所以我要么在 /proc 目录中创建一个文件,要么在 /dev 目录中创建一个设备文件。

问题:我如何在 /proc 和 /dev 之间做出决定。这只是一个判断电话,还是有任何关于使用这两者的不成文协议。

0 投票
1 回答
1045 浏览

linux - 将音频流式传输到 linux 中的“扬声器服务器”

有没有办法将所有音频从笔记本电脑(具有低质量扬声器)流式传输到具有更好 Linux 扬声器(在两台计算机上)的桌面?我认为这必须是一个内核驱动程序,因为它必须适合 alsa 系统以使其应用程序透明。

谢谢,安德鲁

0 投票
2 回答
999 浏览

linux-kernel - Correct lock to use in linux character driver

I am writing a simple character device driver. (kernel 2.6.26) Multiple concurrent reader & writers are expected.

I am not sure what type of lock is best used to synchronize a short access to internal structures.

Any advice will be most appreciated

0 投票
5 回答
2391 浏览

linux-kernel - 对于用户程序和 Linux 内核模块之间的通信,我们有哪些选择?

我是 Linux 内核模块编程的新手。从我目前阅读的材料中,我发现用户程序有 3 种方式请求服务或与 Linux 内核模块通信

  1. /dev 中的设备文件
  2. /proc 文件系统中的文件
  3. ioctl() 调用

问题:我们还有哪些其他选项可用于用户程序和 linux 内核模块之间的通信?

0 投票
4 回答
74147 浏览

c - 如何使用 netlink 套接字与内核模块通信?

我正在尝试编写一个使用 netlink 与用户进程通信的 linux 内核模块。我正在使用 netlink,因为我想与之通信的用户程序仅使用套接字进行通信,我无法将其更改为添加ioctl()或任何东西。

问题是我不知道该怎么做。我已经用谷歌搜索了,但我发现的所有示例都是像这个一样的旧示例,并且对于当前的内核版本不再有效。我也看过这个 SO question,但这里的示例使用libnl进行套接字操作,但我想坚持使用标准套接字函数(由 定义sys/socket.h)。所以有人可以在这里指导我一些教程或指南或一些可以帮助我理解netlink接口和用法的东西。我非常感谢一个工作示例,没什么花哨的,只是一个非常基本的示例,说明如何建立从用户程序中的套接字到内核中的套接字的连接,然后将数据从用户进程发送到内核并从内核接收回来。

另外请不要告诉我看内核代码。我已经在做,但这需要很多时间,而且我已经没有多少时间了。

更新: 经过大量试验和错误后,我有以下代码将消息从用户程序发送到内核,但从内核到用户程序的消息(即使用netlink_unicast())不起作用。它不仅不工作,呼叫挂起系统,然后我必须重新启动机器。有人可以看看并告诉我我做错了什么。该netlink_unicast()调用在以下代码中进行了注释。内核到用户程序消息应该取消注释。

用户程序

内核代码

0 投票
1 回答
2294 浏览

linux-kernel - 通过 SMBus 访问/监控电池状态

我正在尝试通过 SMBus 监控我的电池状态。

我有一个电池和一个不断输出电池状态的控制板。

然后这个控制板通过一个 I2C-USB 模块连接到我的主板。

我需要编写一个程序来识别 SMBus 连接并将电池状态传输给用户。

在处理智能电池和 I2C/SMBus 时,我是一个初学者,我对如何解决这个问题有些迷茫。

任何建议的帮助将不胜感激。谢谢。

0 投票
1 回答
1445 浏览

linux-kernel - 释放 sk_buff 是谁的责任

在使用函数指针创建 netlink 套接字netlink_kernel_create()时,将作为参数传递给此函数,当在此套接字上接收到消息时调用该函数。这个回调函数接收一个sk_buff包含接收到的消息的 as 参数。

我的问题是,释放这个是谁的责任sk_buff

示例代码

#include <linux/module.h>
#include <net/sock.h>
#include <linux/netlink.h>
#include <linux/skbuff.h>

#define NETLINK_USER 31

结构袜子 *nl_sk = NULL;

静态无效 my_nl_recv_msg(结构 sk_buff *skb){

}

静态 int __init hello_init(void) {

}

0 投票
1 回答
1674 浏览

linux-device-driver - Remove USB Host Controller driver from Linux

Can you please let me know how do i disable/remove the USB Host Controller driver from the kernel. Is there a way I can unhook the usb driver module from the kernel.

Linux 2.6.24.7-r1116 / Fedora

0 投票
5 回答
21589 浏览

c - 将 DMA 缓冲区映射到用户空间

我正在 linux-2.6.26 上编写设备驱动程序。我想将一个 dma 缓冲区映射到用户空间,以便将数据从驱动程序发送到用户空间应用程序。请推荐一些关于它的好教程。

谢谢