From owner-svn-src-all@FreeBSD.ORG Wed Feb 23 21:18:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id 494701065673; Wed, 23 Feb 2011 21:18:38 +0000 (UTC) Date: Wed, 23 Feb 2011 21:18:38 +0000 From: Alexander Best To: Bruce Evans Message-ID: <20110223211838.GA27997@freebsd.org> References: <201102231256.p1NCuPHN056220@svn.freebsd.org> <20110223131228.GN78089@deviant.kiev.zoral.com.ua> <20110223135734.GA62693@freebsd.org> <20110224060300.S1008@besplex.bde.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110224060300.S1008@besplex.bde.org> Cc: Kostik Belousov , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, John Baldwin Subject: Re: svn commit: r218967 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Feb 2011 21:18:38 -0000 On Thu Feb 24 11, Bruce Evans wrote: > On Wed, 23 Feb 2011, Alexander Best wrote: > > >On Wed Feb 23 11, Kostik Belousov wrote: > >>On Wed, Feb 23, 2011 at 12:56:25PM +0000, John Baldwin wrote: > >>>... > >>>Log: > >>> Fix off-by-one error in check against max_threads_per_proc. > >>> > >>> Submitted by: arundel > >>> MFC after: 1 week > >>> > >>>Modified: > >>> head/sys/kern/kern_thr.c > >>> > >>>Modified: head/sys/kern/kern_thr.c > >>>============================================================================== > >>>--- head/sys/kern/kern_thr.c Wed Feb 23 10:28:37 2011 (r218966) > >>>+++ head/sys/kern/kern_thr.c Wed Feb 23 12:56:25 2011 (r218967) > >>>@@ -153,7 +153,7 @@ create_thread(struct thread *td, mcontex > >>> p = td->td_proc; > >>> > >>> /* Have race condition but it is cheap. */ > >>>- if (p->p_numthreads >= max_threads_per_proc) { > >>>+ if (p->p_numthreads > max_threads_per_proc) { > >>> ++max_threads_hits; > >>> return (EPROCLIM); > >>> } > >> > >>I do not think there was off by one error. The create_thread() function > >>is called to create new thread, and before the process thread counter > >>is incremented in thread_link(). The old test tried to not allow more > >>then max_threads_per_proc threads in a process, now it allows to > >>create max_threads_per_proc. > > Actually, now it allows to create 1 more than max_threads_per_proc threads > in a process. > > >doesn't the semantics of the term "maximum" imply that it's own value is > >also > >valid? > > Yes. Not 1 more. the misconception on my side was that i thought a process had an initial thread count of zero. however since a process itself counts as a single thread and has a thread id, it's now obvious to me that with max_threads_per_proc=15000 a process should only be allowed to spawn 14999 new threads. thanks for clearing things up for the n3wb. ;) cheers. alex > > >if a sign says maximum weight 2000kg, does that mean that a weight of > >2000kg is > >invalid and the highest valid weight is 1999,999..kg? > > No. This means that if weights are always in units of kg, and are > represented > by indexes starting at index 0, then the highest valid index is 1999. But > if the index is a count of the number of kg's, then the highest valud index > is 2000. > > p->p_numthreads presumably matches its name, so it is a count of a number > of threads and not a thread number. > > Bruce -- a13x