Date: Sat, 31 Oct 2009 19:54:43 +0100 From: Ed Schouten <ed@80386.nl> To: Christian Brueffer <brueffer@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r198714 - head/sbin/mknod Message-ID: <20091031185443.GE1293@hoeg.nl> In-Reply-To: <200910311222.n9VCMOGk089115@svn.freebsd.org> References: <200910311222.n9VCMOGk089115@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Hello Christian,
* Christian Brueffer <brueffer@FreeBSD.org> wrote:
> The majors file was removed long ago, 0 should be used instead.
It's a bit more complex than that. Right now devices are automatically
numbered, using a 32-bits integer. The following macros are used to
obtain the minor and major numbers (see <sys/types.h>):
| #define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */
| #define minor(x) ((int)((x)&0xffff00ff)) /* minor number */
This means that a device number above 255 may (or may not) have a
non-zero major number. Just run the following code:
| #include <fcntl.h>
| #include <stdlib.h>
| #include <unistd.h>
|
| int
| main(int argc, char *argv[])
| {
|
| while (posix_openpt(O_RDWR|O_NOCTTY) >= 0);
| sleep(30);
| return (0);
| }
On my system it even generates device nodes in /dev/pts with a major
number of 4. I wrote a manpage for these macros some time ago. See
makedev(3).
--
Ed Schouten <ed@80386.nl>
WWW: http://80386.nl/
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)
iEYEARECAAYFAkrsh/MACgkQ52SDGA2eCwVVuACfe4j8+CKF2Hb4Rxn3pEbz3Zpz
yYcAnjCOF15CDu9zQoIwL76KydvkWvU1
=A2LX
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091031185443.GE1293>
