Linux 关于调用open的函数,驱动程序可以获得哪些信息?

Linux 关于调用open的函数,驱动程序可以获得哪些信息?,linux,driver,symlink,Linux,Driver,Symlink,驱动程序是否知道有关调用open的应用程序的任何信息 我正在使用一个驱动程序来支持两个类似但不同的设备。我希望能够指定在应用程序中调用open时要使用的特定设备。我正在为每个设备使用符号链接,将其链接到驱动程序的名称,以便我可以调用open(“/dev/dev1”…或open(“/dev/dev2”…而不是open(“/dev/drivername”)…并且如果可能的话,希望能够在open函数中使用此符号链接名称。不,这不起作用。驱动程序无法获取有关用于打开节点的路径的任何信息。设备节点由主/次

驱动程序是否知道有关调用open的应用程序的任何信息


我正在使用一个驱动程序来支持两个类似但不同的设备。我希望能够指定在应用程序中调用open时要使用的特定设备。我正在为每个设备使用符号链接,将其链接到驱动程序的名称,以便我可以调用
open(“/dev/dev1”…
open(“/dev/dev2”…
而不是
open(“/dev/drivername”)…
并且如果可能的话,希望能够在open函数中使用此符号链接名称。

不,这不起作用。驱动程序无法获取有关用于打开节点的路径的任何信息。设备节点由主/次编号和字符/块类型指定,仅此而已。如果您想要不同的“命名”要区分节点,可能它们应该有不同的次要编号。

Hmmm,这很令人失望。如果可以的话,我必须考虑分配不同的次要编号。目前在/dev/中只有一个条目用于驱动程序名称,两个条目用于符号链接,而不管连接的设备数量如何。那么呢无法打开文件结构?无法使用此结构计算路径?
struct file
不包含路径,只包含一个inode。但即使您获得了文件的绝对路径,也无法得到您想要的,即内核已扩展并丢弃的符号链接的路径。