From owner-cvs-src@FreeBSD.ORG Wed Apr 2 18:17:46 2008 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CFA221065789; Wed, 2 Apr 2008 18:17:46 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id B3FC78FC28; Wed, 2 Apr 2008 18:17:46 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by elvis.mu.org (Postfix) with ESMTP id 4F5661A4D90; Wed, 2 Apr 2008 11:17:46 -0700 (PDT) From: John Baldwin To: Jeff Roberson Date: Wed, 2 Apr 2008 14:17:19 -0400 User-Agent: KMail/1.9.7 References: <200804021120.m32BKUYX089976@repoman.freebsd.org> In-Reply-To: <200804021120.m32BKUYX089976@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200804021417.20141.jhb@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/sys callout.h src/sys/kern kern_clock.c kern_intr.c kern_timeout.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Apr 2008 18:17:47 -0000 On Wednesday 02 April 2008 07:20:30 am Jeff Roberson wrote: > jeff 2008-04-02 11:20:30 UTC > > FreeBSD src repository > > Modified files: > sys/sys callout.h > sys/kern kern_clock.c kern_intr.c kern_timeout.c > Log: > Implement per-cpu callout threads, wheels, and locks. > > - Move callout thread creation from kern_intr.c to kern_timeout.c > - Call callout_tick() on every processor via hardclock_cpu() rather than > inspecting callout internal details in kern_clock.c. > - Remove callout implementation details from callout.h > - Package up all of the global variables into a per-cpu callout > structure. - Start one thread per-cpu. Threads are not strictly bound. > They prefer to execute on the native cpu but may migrate temporarily if > interrupts are starving callout processing. > - Run all callouts by default in the thread for cpu0 to maintain current > ordering and concurrency guarantees. Many consumers may not properly > handle concurrent execution. > - The new callout_reset_on() api allows specifying a particular cpu to > execute the callout on. This may migrate a callout to a new cpu. > callout_reset() schedules on the last assigned cpu while > callout_reset_curcpu() schedules on the current cpu. > > Reviewed by: phk > Sponsored by: Nokia This still has the bug in kern_intr.c:swi_add() as per previous e-mail. Surprised gcc didn't warn about it. -- John Baldwin