在Linux设备驱动程序编程中使用struct inode和struct文件传递数据的原因
发布时间:2020-05-24 01:16:36 所属栏目:Linux 来源:互联网
导读:我正在研究 Linux Device Drivers, 3rd edition的第3.5章.本节介绍一种从open函数中的struct inode * inode中我们自己定义的自定义结构的方法: int scull_open(struct inode *inode, struct file *filp){ struct scull_dev *dev; dev = contai
|
我正在研究 Linux Device Drivers,3rd edition的第3.5章.本节介绍一种从open函数中的struct inode * inode中我们自己定义的自定义结构的方法: int scull_open(struct inode *inode,struct file *filp)
{
struct scull_dev *dev;
dev = container_of(inode->i_cdev,struct scull_dev,cdev);
filp->private_data = dev; /* for other methods */
}
return 0;
}
从我的理解,当设备被打开时,代表设备的struct inode * inode被传递给scull_open.然后,提取自定义结构开发并将其传递给filp-> private_data,以便其他方法(如scull_read)可以使用它: ssize_t scull_read(struct file *filp,char _ _user *buf,size_t count,loff_t *f_pos)
{
struct scull_dev *dev = filp->private_data;
/* other codes that uses *dev */
}
这似乎对我来说很好,直到我意识到在scull_setup_cdev here初始化期间我们已经有一个struct scull_dev * dev. 我很困惑,因为我以为我们可以使struct scull_dev * dev成为一个全局变量,那么scull_read和其他方法最终将可以访问它,而不用遍历所有使用inode和file的传递. 我的问题是,为什么我们不把它作为一个全局变量? 任何人都可以提供一些使用这种方法传递数据的实例吗? 解决方法线程安全!如果两个线程/进程同时使用驱动程序怎么办?(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 允许的Linux密码字符列表
- 数组 – asort(src,dest)到多维数组
- linux – 性能 – 多线程或多进程应用程序
- 转载--linux filesystem structures
- Shell脚本将5个或更多json文件连接在一起
- linux/ubuntu mysql-python安装时EnvironmentError: mysql_
- linux – 如何编写一个使用image magick将图像切割成碎片的
- linux – “rm:无法移除xxx:设备上没有剩余空间”在BTRFS
- linux – 添加辅助网络接口时CentOS virtualbox no icfg-et
- linux – 上下文切换的开销是什么?
推荐文章
站长推荐
- linux – 如何确定哪个文件/ inode占用给定扇区
- linux – 如何检查bash脚本中的依赖项
- 启动weblogic的错误:Could not obtain an exclu
- 在Linux内核源代码中遇到Abstruse #define宏
- linux – 是否有工具可以监控或记录Web服务器响应
- linux execvp; ls无法访问|,没有这样的文件或目录
- linux – “route”和“ip route”有什么区别?
- linux – 如何在Elastic Beanstalk上为特定容器设
- LINUX实战:Ubuntu下用QEMU搭建ARM Linux运行环境
- Linux递归chmod仅在子目录下
热点阅读
