2 lee fd Lee_fd 于 2016.09.19 09:21 提问

关于 struct file 结构体中的private_data成员的作用

比如,简单实现read和write,在open的时候将设备结构体的首地址保存到了
file->private_data
中,当然这样写,在read和write中直接从
file->private_data
中获取即可。但是我也可以直接定义一个全局的指针,然后在推空间上申请一个也可以啊,同样可以使用。
请问:如果定义一个全局的指针的话,在长时间使用这个驱动文件时会出现什么问题?如果用前一种方法有什么好处?

1个回答

shihengzhen101
shihengzhen101   Rxr 2016.09.19 10:11

1)文件的描述符,或者说是句柄在计算机中也是一种资源
2)如果程序只是针对于个别文件的操作,一直把这个文件打开也没有什么关系
3)但是如果程序是对多个文件操作,如果定义长期打开的指针会占用资源,这种资源的分配是有限的,超过了限额就没办法申请了
4)换句话说,如果你打开的文件过多,就无法再正常的打开文件了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
file结构中的private_data
这个是Linux下连接VFS文件系统框架和不同文件/文件系统底层实现之间的一个核心数据结构,虽然它只是一个指针,但是一个指针可以解决所有问题。我们回想一下用户态线程的创建结构,函数的入口同样是一个void*指针,而千言万语汇成一根指针,诗可以兴、可以观、可以群、可以怨,可以解决所有问题。 因为file是VFS框架的一个基本概念,它要支持文件操作结构,例如open/read/write/relea
关于struct file 结构下 private_data 数据结构z作用
这个是Linux下连接VFS文件系统框架和不同文件/文件系统底层实现之间的一个核心数据结构,虽然它只是一个指针,但是一个指针可以解决所有问题。我们回想一下用户态线程的创建结构,函数的入口同样是一个void*指针,而千言万语汇成一根指针,诗可以兴、可以观、可以群、可以怨,可以解决所有问题。 因为file是VFS框架的一个基本概念,它要支持文件操作结构,例如open/read/write/relea
linux内核中struct file_operations 结构体介绍
File_operations结构体        file_operation就是把系统调用和驱动程序关联起来的关键数据结构。这个结构的每一个成员都对应着一个系统调用。读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了Linux设备驱动程序的工作。     在系统内部,I/O设备的存取操作通过特定的入口点来进行,而这组特定的入口点恰恰是由设备驱动程序提供的。
Linux设备驱动模型的private_data 简单理解
Linux内核模型,主要是通过kobject kset来组织各部分目录的关系。 我的理解:任何的kobject都是一个对象元素,kset就是元素的集合,并且kset本身也有kobject的属性,并且描述kset的kobject同样隶属于另外一个kset集合。 内核模型的bus class driver devices数据结构,内部都镶嵌了自己的private data,用来用作外部访问的接口
file*中神秘的private_data指针
file结构中的private_data         这个是Linux下连接VFS文件系统框架和不同文件/文件系统底层实现之间的一个核心数据结构,虽然它只是一个指针,但是一个指针可以解决所有问题,有了它,妈妈再也不用担心我的学习。我们回想一下用户态线程的创建结构,函数的入口同样是一个void*指针,而千言万语汇成一根指针,诗可以兴、可以观、可以群、可以怨,可以解决所有问题。 因为file是
file_operations结构体介绍
1.在内核中file_operations源码 linux-2.6.38/include/linux/fs.h /* * NOTE: * all file operations except setlease can be called without * the big kernel lock held in all filesystems. */ struct file_oper
结构体最后定义一个char p[0];这样的成员有何意义(转)
结构体最后定义一个char p[0];这样的成员有何意义(转) (2006-12-26 19:01) struct  ast_exten  {             char  *exten;                            /*  Extension  name  */             int  matchcid;
FILE结构体成员
C将每个文件简单地作为顺序字节流(如下图)。每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中。当打开文件时,就建立了和文件的关系。      在开始执行程序的时候,将自动打开3个文件和相关的流:标准输入流、标准输出流和标准错误。流提供了文件和程序的通信通道。例如,标准输入流使得程序可以从键盘读取数据,而标准输出流使得程序可以在屏幕上输出
file_operation结构体详解
file_operation结构体详解 2012/4/26 file_operation结构体详解   ile_operations结构体分析   结构体file_operations在头文件 linux/fs.h中定义,用来存储驱动内核模块提供的对 设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的事务的函数的地址。   举个例子,每个字符设备需
linux中文件描述符fd和struct file结构体的释放
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。 文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用;  而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构