[[toc]]
在Linux驱动开发中的私有数据
大多数linux驱动开发中”,那就是将文件的私有的数据private_data
指向设备结构体,在read()
,write
,ioctl()
,llseek
等函数通过private_data
访问设备结构体。一般,我们在open
里,讲设备结构体赋值给文件私有数据指针,然后我们在ioctl
,read
,write
等函数里面,通过filep找到设备结构体,并对设备进行操作。
{9,10}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| struct globalmem_dev { struct cdev cdev; unsigned char mem[GLOBALMEM_SIZE]; }; static struct globalmem_dev *globalmem_devp; int globalmem_open(struct inode *inode, struct file *filp) { filp->private_data = globalmem_devp; return 0; }
static int globalmem_ioctl(struct inode *inodep, struct file *filp, unsigned int cmd, unsigned long arg) { struct globalmem_dev *dev = filp->private_data; switch (cmd) { case MEM_CLEAR: memset(dev->mem, 0, GLOBALMEM_SIZE); printk(KERN_INFO "globalmem is set to zero\n"); break;
default: return -EINVAL; } return 0; }
|