Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Aug 2017 14:43:03 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r321920 - head/sys/sys
Message-ID:  <20170802114303.GE1700@kib.kiev.ua>
In-Reply-To: <912d42d0-ea07-82ec-e754-f6b6d2b4cc94@selasky.org>
References:  <201708021014.v72AEHEk061037@repo.freebsd.org> <7b1d274f-a531-f788-742a-a8375fe76763@selasky.org> <20170802110607.GC1700@kib.kiev.ua> <760e0077-499e-fffb-a86b-979e410b35e1@selasky.org> <20170802111752.GD1700@kib.kiev.ua> <912d42d0-ea07-82ec-e754-f6b6d2b4cc94@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170802114303.GE1700>