svn commit: r321920 - head/sys/sys
Konstantin Belousov
kostikbel at gmail.com
Wed Aug 2 11:43:08 UTC 2017
On Wed, Aug 02, 2017 at 01:27:50PM +0200, Hans Petter Selasky wrote:
> On 08/02/17 13:17, Konstantin Belousov wrote:
> > But y must be dev_t.
>
> Sure, but "struct cdev" 's si_drv0 is only "int" . How can it contain
> dev_t ?
Why should it contain dev_t ?
Linux KPI abused that field it seems.
Lets change the focus of the discussion.
You cited the
struct linux_cdev *
linux_find_cdev(const char *name, unsigned major, unsigned minor)
function which finds cdev (or some mockup of the native cdev) by major/minor.
Where does these major/minor numbers come from ?
I mean that if they are contructed as major(struct stat.st_rdev) and
minor(struct stat.st_rdev), then even the original code looks wrong
without the ino64 addition. Since devfs reports the internal inode
number into st_rdev, which formally is not accessible outside the devfs
filesystem. So should the code for linux_find_cdev() changed to match
cdevs against inode number ?
cdp_inode is serially generated so on real machine it is really a small
number for any /dev node. You can watch that by ls -l /dev.
More information about the svn-src-head
mailing list