问题标签 [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.
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。请访问它以解决问题。
c - 如何调试内核日志?
我正在尝试根据本教程编写 scull 设备:linux 设备驱动程序。我的来源是我的 scull repo,其中dmesg2.err
包含内核日志转储的文件。我以前在初始化我已修复的驱动程序模块的 char 设备内核输出奇怪的 dmesg 时遇到问题。现在的问题是,当我尝试从空设备读取时/dev/scull0
,我收到killed
. 或者当我尝试写作时echo "abc" >/dev/stdin
,Segmentation fault
. 我真的很想学习如何从 kern.log 中调试,但还没有这方面的技能(我是中级 c,并且是 GAS asm 的基础),因此希望有一些非常好的调试内核的书+ 我需要什么技能来理解它。您可以在源代码中找到错误,但我打算在将来自己解决这些错误。感谢您的建议。
linux - 内核中多个缓冲区的 mmap 崩溃请帮助(使用 dma_mmap_coherent)
我正在开发一个 Linux 内核模块,它为每个字符设备分配多个缓冲区,然后用户空间应用程序将这些缓冲区映射到用户空间。我的字符设备类有大约十个或更多缓冲区,并且在打开时间我分配这些缓冲区,每个缓冲区的大小为 0x8000。我遇到的问题是将这些缓冲区映射到用户空间指针时。我只能映射一个缓冲区,但是当我尝试分配第二个缓冲区时,它就会崩溃。我对dma_mmap_coherent不太熟悉,有人可以帮我解决这个问题。
下面是一些代码信息:
// 我的内存类型结构
// 内核中的缓冲区分配(IOCTL 调用)
// MMAP
// 用户空间应用程序
c - 为什么变量在导入 fs.h 时具有不完整的类型“struct file_operations”?
我尝试导入 file_operations 的结构并收到此错误:
我的进口是
错误出现在 fops:
最少的代码:
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 之间的值是否保留用于其他目的?
python - Python 从字符设备读取空字节数组
我在 Debian 下运行的工业 PC 上获得了一些 gpio 的字符设备。
在 C 中阅读工作得很好
编辑
我忘了; 这让我将两个 io 引脚的状态设为 0 到 3 之间的值并且运行良好。但我需要在 Python 中执行此操作。
而 Python 以这种方式做出反应
或者,使用常开:
我怎样才能解决这个问题?
arrays - Linux 模块中的模块参数数组未显示在 sysfs 中
我正在一个模块中为 Linux 编写一个字符设备驱动程序。
我需要使用模块参数数组来显示有关打开设备的一些状态信息,但这无法正常工作。我还使用了一个 int 参数(不是数组),它们的初始化如下:
/sys/module/mymodule/parameters
现在,这些参数按应有的方式列在 VFS中。如果我allow_live_bait
使用文本编辑器打开参数,它会正确显示数字1
,但如果我打开open_permissions
参数(始终使用文本编辑器),它不会显示任何内容。
此外,这不是初始化不正确的问题,因为我尝试像这样在 init_module 函数中打印数组的值,并且它们已正确初始化:
我想知道的是,这是否是使用数组参数时的正常行为,或者我做错了什么。