【发布时间】:2012-09-07 03:23:21
【问题描述】:
是否保证结构文件指针在其打开到关闭的生命周期中不会被释放和重新分配到内存中的其他位置?
我想唯一标识传递给设备驱动程序的文件结构(通过读/写/打开等),并且想知道是否可以只使用指向文件结构的指针进行标识。我看到的唯一另一种选择是在 private_data 中存储一个唯一标识符,如果不能保证结构文件指针不会改变。
【问题讨论】:
-
我假设您的意思只是通过文件的生命周期(打开->关闭),而不是像这样,它永远会被释放吗?
-
是的,只是通过生命周期。
-
IIUC,{devicenumber,inodenumber} 是文件的自然键。在数据建模的意义上,指针在功能上依赖于它们。原始指针值可能及时稳定,但我不相信它。免责声明:该死,Jim,我是 DBA,而不是内核黑客。
-
文件结构表示进程中打开的文件,而不是文件系统中由devnumber/inodenumber表示的实际文件。所以你可以有多个文件结构指向同一个设备/inode。
-
wildplasser:在 linux 内核中,用于打开和关闭的字符设备回调接收
struct inode *和struct file *。您可以使用inode来了解您正在处理/dev中可能的多个条目中的哪一个。每一个都可以被多个独立的线程访问。这些独立线程中的每一个都可以在该 inode 上调用open(),它们会得到一个独立的struct file *。通常,当内核开发人员使用struct file *时,他们会使用一个名为 private_data 的字段来存储指向他们正在使用的自定义数据的指针。
标签: linux kernel driver linux-device-driver file-structure