当前位置: 技术问答>linux和unix
spidev.c文件的filp->private_data问题
来源: 互联网 发布时间:2017-05-16
本文导语: static int spidev_open(struct inode *inode, struct file *filp) { 。。。 if (status == 0) { spidev->users++; filp->private_data = spidev; ...
static int spidev_open(struct inode *inode, struct file *filp)
{
。。。
if (status == 0) {
spidev->users++;
filp->private_data = spidev;
}
。。。
}
static int spidev_release(struct inode *inode, struct file *filp)
{
。。。
spidev = filp->private_data;
filp->private_data = NULL;
spidev->users--;
。。。
}
想请教下,每次open是否都创建新的file 结构体变量,并且将spidev保存在各自file指针filp->private_data中?这样在close的时候将filp->private_data = NULL,就不会影响其他open的进程。这个问题好像有些简单,请帮帮我这个菜鸟,谢谢!
{
。。。
if (status == 0) {
spidev->users++;
filp->private_data = spidev;
}
。。。
}
static int spidev_release(struct inode *inode, struct file *filp)
{
。。。
spidev = filp->private_data;
filp->private_data = NULL;
spidev->users--;
。。。
}
想请教下,每次open是否都创建新的file 结构体变量,并且将spidev保存在各自file指针filp->private_data中?这样在close的时候将filp->private_data = NULL,就不会影响其他open的进程。这个问题好像有些简单,请帮帮我这个菜鸟,谢谢!
|
你说的open一个文件还是设备?貌似同一类型的设备只要这个节点号存在,该设备的file结构体就存在,不不要你去创建。但是private_data需要你自己来处理,一般情况下在release的时候也只会设防private_data的空间。
|
确实要创建file结构体变量,不过都是指针类型的,filp->private_data必须指向已申请的内存地址或者全局变量
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。