linux简单字符设备驱动

文件打开函数
int VirtualDisk_open(struct inode *inode, struct file *filp)
{
/*将设备结构体指针赋值给文件私有数据指针*/
filp->private_data = VirtualDisk_devp;
struct VirtualDisk *devp = filp->private_data; /*获得设备结构体指针*/
devp->count++; /*增加设备打开次数*/
return 0;
}
其中 VirtualDisk_devp 是一个自定义的设备结构体指针,设备结构体定义如下:
struct VirtualDisk
{
struct cdev cdev;
unsigned char mem[1000];
int port1;
int port2;
long count;
};
问题:filp->private_data = VirtualDisk_devp;
struct VirtualDisk *devp = filp->private_data;
devp->count++;
这3句,最终目的是实现设备打开次数计数加1
那为什么不直接 VirtualDisk_devp->count++;
而是要把VirtualDisk_devp指针先赋值给文件私有数据指针,再赋值给一个声明为局部变量的指针,再操作局部变量指针指向的count加1呢?

第1个回答  2014-04-11
也可以改成两行:

VirtualDisk_devp->count++;
filp->private_data = VirtualDisk_devp;
相似回答