From owner-svn-src-head@FreeBSD.ORG Sun Jan 25 18:59:18 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1CC491065672; Sun, 25 Jan 2009 18:59:18 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.225]) by mx1.freebsd.org (Postfix) with ESMTP id D75128FC18; Sun, 25 Jan 2009 18:59:17 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: by rv-out-0506.google.com with SMTP id b25so5659887rvf.43 for ; Sun, 25 Jan 2009 10:59:17 -0800 (PST) Received: by 10.140.139.3 with SMTP id m3mr1337132rvd.270.1232909957201; Sun, 25 Jan 2009 10:59:17 -0800 (PST) Received: from ?10.0.1.199? (udp005586uds.hawaiiantel.net [72.234.105.237]) by mx.google.com with ESMTPS id k2sm28616673rvb.6.2009.01.25.10.59.14 (version=SSLv3 cipher=RC4-MD5); Sun, 25 Jan 2009 10:59:15 -0800 (PST) Date: Sun, 25 Jan 2009 08:56:40 -1000 (HST) From: Jeff Roberson X-X-Sender: jroberson@desktop To: Jeff Roberson In-Reply-To: <200901251838.n0PIcgXk024858@svn.freebsd.org> Message-ID: <20090125085419.O983@desktop> References: <200901251838.n0PIcgXk024858@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r187693 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2009 18:59:18 -0000 On Sun, 25 Jan 2009, Jeff Roberson wrote: > Author: jeff > Date: Sun Jan 25 18:38:42 2009 > New Revision: 187693 > URL: http://svn.freebsd.org/changeset/base/187693 > > Log: > - bit has to be fd_mask to work properly on 64bit platforms. Constants > must also be cast even though the result ultimately is promoted > to 64bit. > - Correct a loop index upper bound in selscan(). Sorry about that, should've tested my earlier patch for more than a couple of days. I seldom remember c's integer promotion rules as they relate to constants. You'd think they'd make it easy on us and just promote it to the largest type in the expression/lvalue. I'm not sure why they don't. Perhaps the more careful among you knows the answer. Thanks, Jeff > > Modified: > head/sys/kern/sys_generic.c > > Modified: head/sys/kern/sys_generic.c > ============================================================================== > --- head/sys/kern/sys_generic.c Sun Jan 25 18:20:15 2009 (r187692) > +++ head/sys/kern/sys_generic.c Sun Jan 25 18:38:42 2009 (r187693) > @@ -965,8 +965,8 @@ selrescan(struct thread *td, fd_mask **i > struct selfd *sfp; > struct selfd *sfn; > struct file *fp; > - int fd, ev, n; > - int idx, bit; > + fd_mask bit; > + int fd, ev, n, idx; > > fdp = td->td_proc->p_fd; > stp = td->td_sel; > @@ -984,7 +984,7 @@ selrescan(struct thread *td, fd_mask **i > return (EBADF); > } > idx = fd / NFDBITS; > - bit = 1 << (fd % NFDBITS); > + bit = (fd_mask)1 << (fd % NFDBITS); > ev = fo_poll(fp, selflags(ibits, idx, bit), td->td_ucred, td); > if (ev != 0) > n += selsetbits(ibits, obits, idx, bit, ev); > @@ -1007,13 +1007,14 @@ selscan(td, ibits, obits, nfd) > { > struct filedesc *fdp; > struct file *fp; > + fd_mask bit; > int ev, flags, end, fd; > - int n, idx, bit; > + int n, idx; > > fdp = td->td_proc->p_fd; > n = 0; > FILEDESC_SLOCK(fdp); > - for (idx = 0, fd = 0; idx < nfd; idx++) { > + for (idx = 0, fd = 0; fd < nfd; idx++) { > end = imin(fd + NFDBITS, nfd); > for (bit = 1; fd < end; bit <<= 1, fd++) { > /* Compute the list of events we're interested in. */ >