从设备文件中读取

时间:2015-06-05 23:21:50

标签: c kernel linux-device-driver

我有一个内核模块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

1 个答案:

答案 0 :(得分:1)

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

myModule->ops = &fops;