问题标签 [chardev]

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 投票
0 回答
119 浏览

c - 我的驱动程序模块的内核输出奇怪的 dmesg

从我的previsou问题为什么模块无法加载?(/dev/scull0:没有这样的设备或地址)我设法通过加载模块/sbin/insmod,但在那之后,我已经注销了 dmesg:

在这里我可以观察到,混乱是由scull_trim(下面的源代码)引起的,内核触发strace来解决它(或者当内核Call Trace:出现问题时内核调用?)。

scull_trim

该函数scull_trim基本上来自linux device driver, 3 edition,并且该函数的目的是在调用方法之前从设备中删除所有字节open。但是为什么它会导致dmesg错误,内核必须调用 strace 来解决它?

编辑:因为几乎不可能解决问题,所以我从 github 添加源(以及 dmesg 转储): repo:scull device。请访问它以解决问题。

0 投票
0 回答
102 浏览

c - 如何调试内核日志?

我正在尝试根据本教程编写 scull 设备:linux 设备驱动程序。我的来源是我的 scull repo,其中dmesg2.err包含内核日志转储的文件。我以前在初始化我已修复的驱动程序模块的 char 设备内核输出奇怪的 dmesg 时遇到问题。现在的问题是,当我尝试从空设备读取时/dev/scull0,我收到killed. 或者当我尝试写作时echo "abc" >/dev/stdinSegmentation fault. 我真的很想学习如何从 kern.log 中调试,但还没有这方面的技能(我是中级 c,并且是 GAS asm 的基础),因此希望有一些非常好的调试内核的书+ 我需要什么技能来理解它。您可以在源代码中找到错误,但我打算在将来自己解决这些错误。感谢您的建议。

0 投票
1 回答
88 浏览

linux - 内核中多个缓冲区的 mmap 崩溃请帮助(使用 dma_mmap_coherent)

我正在开发一个 Linux 内核模块,它为每个字符设备分配多个缓冲区,然后用户空间应用程序将这些缓冲区映射到用户空间。我的字符设备类有大约十个或更多缓冲区,并且在打开时间我分配这些缓冲区,每个缓冲区的大小为 0x8000。我遇到的问题是将这些缓冲区映射到用户空间指针时。我只能映射一个缓冲区,但是当我尝试分配第二个缓冲区时,它就会崩溃。我对dma_mmap_coherent不太熟悉,有人可以帮我解决这个问题。

下面是一些代码信息:

// 我的内存类型结构

// 内核中的缓冲区分配(IOCTL 调用)

// MMAP

// 用户空间应用程序

0 投票
1 回答
229 浏览

c - 为什么变量在导入 fs.h 时具有不完整的类型“struct file_operations”?

我尝试导入 file_operations 的结构并收到此错误:

我的进口是

错误出现在 fops:

最少的代码:

0 投票
0 回答
116 浏览

linux-kernel - Linux 内核源代码中的字符设备主编号范围

我正在了解 Linux 内核源代码中 char 设备的主要数字。

char 设备主编号最大值在 include/linux/fs.h #define CHRDEV_MAJOR_MAX 512中定义

dev_t 中主编号的位数为 12,这意味着最大值为“4096”。使用主编号最大值作为 512 的任何具体原因?

根据include/linux/fs.h中定义的以下宏

动态主要号码有 2 个范围。1 是 255 到 234,另一个是 511 到 384。384 到 255 之间的值是否保留用于其他目的?

0 投票
1 回答
40 浏览

python - Python 从字符设备读取空字节数组

我在 Debian 下运行的工业 PC 上获得了一些 gpio 的字符设备。

在 C 中阅读工作得很好

编辑

我忘了; 这让我将两个 io 引脚的状态设为 0 到 3 之间的值并且运行良好。但我需要在 Python 中执行此操作。

而 Python 以这种方式做出反应

或者,使用常开:

我怎样才能解决这个问题?

0 投票
1 回答
50 浏览

arrays - Linux 模块中的模块参数数组未显示在 sysfs 中

我正在一个模块中为 Linux 编写一个字符设备驱动程序。

我需要使用模块参数数组来显示有关打开设备的一些状态信息,但这无法正常工作。我还使用了一个 int 参数(不是数组),它们的初始化如下:

/sys/module/mymodule/parameters现在,这些参数按应有的方式列在 VFS中。如果我allow_live_bait 使用文本编辑器打开参数,它会正确显示数字1,但如果我打开open_permissions参数(始终使用文本编辑器),它不会显示任何内容。

此外,这不是初始化不正确的问题,因为我尝试像这样在 init_module 函数中打印数组的值,并且它们已正确初始化:

我想知道的是,这是否是使用数组参数时的正常行为,或者我做错了什么。