Date: Sat, 23 Feb 2002 17:44:39 +0100 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: David Wolfskill <david@catwhisker.org> Cc: current@FreeBSD.ORG, tanimura@FreeBSD.ORG Subject: Re: Problem with buildworld: what is "major" really supposed to be? Message-ID: <7126.1014482679@critter.freebsd.dk> In-Reply-To: Your message of "Sat, 23 Feb 2002 08:42:40 PST." <200202231642.g1NGgen81171@bunrab.catwhisker.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Yeah, I'm chasing that one right now.
I'm not yet quite sure which commit has broken this, nor what the right
fix is...
Poul-Henning
In message <200202231642.g1NGgen81171@bunrab.catwhisker.org>, David Wolfskill w
rites:
>Trying to "make buildworld" for today's -CURRENT, I get:
>
>>>> stage 4: building libraries
>--------------------------------------------------------------
>...
>===> doc
>cc -fpic -DPIC -O -pipe -DLIBC_SCCS -I/usr/src/lib/libkvm -c /usr/src/lib/libkvm/kvm_file.c -o kvm_file.So
>In file included from /usr/obj/usr/src/i386/usr/include/sys/file.h:40,
> from /usr/src/lib/libkvm/kvm_file.c:54:
>/usr/obj/usr/src/i386/usr/include/sys/systm.h:305: syntax error before `int'
>/usr/obj/usr/src/i386/usr/include/sys/systm.h:306: syntax error before `int'
>/usr/obj/usr/src/i386/usr/include/sys/systm.h:307: syntax error before `('
>*** Error code 1
>
>
>After enough tinkering with copies of the files to demonstrate to
>my satisfaction that my C skills are pretty rusty, I noticed that:
>
>* The lines in systm.h look like (starting at line 301):
>
>/*
> * Common `dev_t' stuff are declared here to avoid #include poisoning
> */
>
>int major(dev_t x);
>int minor(dev_t x);
>dev_t makedev(int x, int y);
>udev_t dev2udev(dev_t x);
>dev_t udev2dev(udev_t x, int b);
>int uminor(udev_t dev);
>int umajor(udev_t dev);
>udev_t makeudev(int x, int y);
>
>
> so it looks as if we're declaring "major" as a function returning int.
>
>* But sys/sys/file.h, starting at line 49 reads:
>
>#ifdef _KERNEL
>#include <sys/types.h>
>#include <sys/queue.h>
>#include <sys/_lock.h>
>#include <sys/_mutex.h>
>
> which is OK, except that sys/sys/types.h, starting at line 113 reads:
>
>/*
> * minor() gives a cookie instead of an index since we don't want to
> * change the meanings of bits 0-15 or waste time and space shifting
> * bits 16-31 for devices that don't use them.
> */
>#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */
>#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */
>#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */
>
>
> and this appears to be a bit of a problem, because by the time the C
> compiler gets to the "int major(dev_t x);" line in sys/sys/systm.h,
> "major" has been replaced, so the line looks like:
>
>int ((int)(((u_int)( dev_t x ) >> 8)&0xff)) ;
>
> which is pretty non-ideal, any way you look at it.
>
>
>In case it's of interest/value, recent CVSup history is:
>freebeast(5.0-C)[44] tail /var/log/cvsup-history.log
>CVSup begin from cvsup14.freebsd.org at Tue Feb 19 03:47:02 PST 2002
>CVSup ended from cvsup14.freebsd.org at Tue Feb 19 03:53:36 PST 2002
>CVSup begin from cvsup14.freebsd.org at Wed Feb 20 03:47:02 PST 2002
>CVSup ended from cvsup14.freebsd.org at Wed Feb 20 04:00:08 PST 2002
>CVSup begin from cvsup14.freebsd.org at Thu Feb 21 03:47:03 PST 2002
>CVSup ended from cvsup14.freebsd.org at Thu Feb 21 03:53:29 PST 2002
>CVSup begin from cvsup14.freebsd.org at Fri Feb 22 03:47:02 PST 2002
>CVSup ended from cvsup14.freebsd.org at Fri Feb 22 03:54:26 PST 2002
>CVSup begin from cvsup14.freebsd.org at Sat Feb 23 04:35:13 PST 2002
>CVSup ended from cvsup14.freebsd.org at Sat Feb 23 04:42:37 PST 2002
>freebeast(5.0-C)[45]
>
>
>So: how should this be resolved? Or am I just confused (again)?
>
>
>Thanks,
>david
>--
>David H. Wolfskill david@catwhisker.org
>I believe it would be irresponsible (and thus, unethical) for me to advise,
>recommend, or support the use of any product that is or depends on any
>Microsoft product for any purpose other than personal amusement.
>
>To Unsubscribe: send mail to majordomo@FreeBSD.org
>with "unsubscribe freebsd-current" in the body of the message
>
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7126.1014482679>
