From owner-cvs-all@FreeBSD.ORG Wed Jun 30 08:00:50 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from green.homeunix.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id B313316A4CE; Wed, 30 Jun 2004 08:00:49 +0000 (GMT) Received: from green.homeunix.org (green@localhost [127.0.0.1]) by green.homeunix.org (8.12.11/8.12.11) with ESMTP id i5U80nKH046309; Wed, 30 Jun 2004 04:00:49 -0400 (EDT) (envelope-from green@green.homeunix.org) Received: (from green@localhost) by green.homeunix.org (8.12.11/8.12.11/Submit) id i5U80mpK046308; Wed, 30 Jun 2004 04:00:48 -0400 (EDT) (envelope-from green) Date: Wed, 30 Jun 2004 04:00:47 -0400 From: Brian Fundakowski Feldman To: Bruce Evans , Andrew Gallatin , src-committers@FreeBSD.ORG, cvs-src@FreeBSD.ORG, cvs-all@FreeBSD.ORG Message-ID: <20040630080047.GC946@green.homeunix.org> References: <200406281915.i5SJFeaV060231@repoman.freebsd.org> <20040628152232.A2977@grasshopper.cs.duke.edu> <20040628193858.GG5635@green.homeunix.org> <16608.30892.745161.730935@grasshopper.cs.duke.edu> <20040629114614.T2908@gamplex.bde.org> <16609.23767.245708.270218@grasshopper.cs.duke.edu> <20040630095111.U2619@gamplex.bde.org> <20040630030248.GA26810@VARK.homeunix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040630030248.GA26810@VARK.homeunix.com> User-Agent: Mutt/1.5.6i Subject: Re: cvs commit: src/sys/vm vm_map.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 08:00:50 -0000 On Tue, Jun 29, 2004 at 08:02:48PM -0700, David Schultz wrote: > On Wed, Jun 30, 2004, Bruce Evans wrote: > > On Tue, 29 Jun 2004, Andrew Gallatin wrote: > > > > > Bruce Evans writes: > > > > On Mon, 28 Jun 2004, Andrew Gallatin wrote: > > > > > > > > Log: > > > > > > > > Fix alpha - the use of min() on longs was loosing the high bits and > > > > > > > > returning wrong answers, leading to strange values vm2->vm_{s,t,d}size. > > > > > > > > MIN() and MAX() should not be used in the kernel. 4.4BSD removed them in > > > > the kernel, but FreeBSD broke this in rev.1.141 of sys/param.h. They > > > > remain removed in RELENG_4. > > > > > > OK. Then what's the correct fix? ulmin()? > > > > Fixing min() to handle all unsigned types is probably best. > > Hmm...but this means either > > a) slightly pessimizing 32-bit ports with a function on uintmax_t's, > > b) using a macro and introducing double-expansion problems, or > > c) using GCC extensions > > Option (c) seems best from a technical standpoint, except that > we'd be making it harder than it already is to compile the kernel > with compilers other than gcc and icc. (Do others have the > statement expr extension?) No, the correct fix is using MIN() or MAX() that are well-documented to provide the exact side-effects C programmers know to expect. They automatically return the correct type, too, with no coercion! -- Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\ <> green@FreeBSD.org \ The Power to Serve! \ Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\