1.open函数
我们从inode中获取scull_dev指针,并将其赋给filp->private_data,这样在其它文件函数中便可以知道当前正在操作的设备文件。
如果是只写方式打开文件,我们还要清空设备文件的内存。
2.read函数
从对应设备中读取内容,这里要判断当前文件位置f_pos和读取的长度count在文件中是否有内容,如果没有内容返回0,示意文件结束。
3.write函数
判断要写入的位置是否有内存,如果没有内存要分配内存。写入成功后要更新文件长度dev->size
4.llseek函数
移动filp中的当前文件指针。
更详细的说明在注释中给出。
实现了open,read,write,llseek函数后scull.c代码如下:
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/kernel.h> /* printk() */
#include <linux/slab.h> /* kmalloc() */
#i