Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261221AbVELBg2 (ORCPT ); Wed, 11 May 2005 21:36:28 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261232AbVELBg1 (ORCPT ); Wed, 11 May 2005 21:36:27 -0400 Received: from main.gmane.org ([80.91.229.2]:11986 "EHLO ciao.gmane.org") by vger.kernel.org with ESMTP id S261221AbVELBgX (ORCPT ); Wed, 11 May 2005 21:36:23 -0400 X-Injected-Via-Gmane: http://gmane.org/ To: linux-kernel@vger.kernel.org From: "Joe Seigh" Subject: Re: RCU + SMR for preemptive kernel/user threads. Date: Wed, 11 May 2005 20:39:20 -0400 Message-ID: References: <20050510165512.GA1569@us.ibm.com> <20050511150454.GA1343@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed delsp=yes Content-Transfer-Encoding: 7BIT X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: stenquists.hsd1.ma.comcast.net User-Agent: Opera M2/7.54 (Win32, build 3865) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1584 Lines: 29 On Wed, 11 May 2005 17:47:52 -0400, Joe Seigh wrote: > > But if you looked at the hazard pointer in the IPI interrupt handler, > you could use that information to decide whether you had to wait an > additional RCU interval. So updater logic would be > > 1. Set global pointer to NULL. // make object unreachable > 2. Send IPIs to all other CPUs > (IPI interrupt handler will copy CPU's hazard pointers) > 3. Check objects to be freed against copied hazard pointers. > 4. There is no step 4. Even if the actual hazard pointers > that pointed to the object is NULL by this point (but not > its copy), you'd still have to wait and addtional RCU > interval so you might as well leave it out as redundant. > > This is better. I may try that trick I used to make NPTL condvars > faster to see if I can keep Linux user space version of this from > tanking. It uses unix signals instead of IPIs. > I should add that this is pretty close to deferred reference counting, not the reference counting bit but that it differentiates between local references and shared global references like RCU does. It lets them avoid having to stop the world to GC, just stop one thread at a time to examine the stack. -- Joe Seigh - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/