Proper way to get device file minor number from struct file
bjorn at mork.no
Sun Jul 10 12:02:23 EDT 2016
"Matwey V. Kornilov" <matwey.kornilov at gmail.com> writes:
> I am looking through some legacy out of tree custom linux kernel device
> It is full of lines like the following:
> here struct file *fp is an argument of callback of struct file_operations.
> Documentation/filesystems/porting says:
> "f_dentry is gone; use f_path.dentry, or, better yet, see if you can
> avoid it entirely"
> So, is there a proper compatible way to do the same?
Don't know how proper it is, but a "git grep iminor drivers/" shows that
minor = iminor(file_inode(file));
is a very common construct.
Or alternatively, do the iminor(inode) lookup once in open() to lookup
up your device struct or whatever, and then save that reference in
file->private_data, thereby avoiding the need to know the minor anywhere
More information about the Kernelnewbies