从设备文件中读取

Read from device file

我有一个内核模块 myModule,其主编号为 100,次编号为 120。 这是我所做的:

make all
sudo insmod ./myModule.ko
mknod ~/myModule c 100 120

当我用

检查日志时
cat /proc/syslog

然后它显示了 init 函数中的 printk() 内容。

不过我也实现了这个功能:

ssize_t myModule_read(struct file *f, char __user *user_buffer, size_t num, loff_t *offset);

它在进程从设备文件读取时提供 printk()。 由于我的设备文件在我的主目录中,我尝试了以下操作:

cat ~/myModule

hexdump ~/myModule

但是它说没有这样的设备或地址。

那我怎么才能真正触发读取(或释放)功能呢?

编辑: 如果 mknod 是多余的:设备文件也不在 /dev/ 目录中。 但它显示为:

cat /proc/devices

您需要确保设置从 cdev_alloc() 返回的 cdev 结构的 struct file_operations *ops 字段:

myModule->ops = &fops;