Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757794AbXHQLvM (ORCPT ); Fri, 17 Aug 2007 07:51:12 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759946AbXHQLuw (ORCPT ); Fri, 17 Aug 2007 07:50:52 -0400 Received: from webmail.icp-qv1-irony2.iinet.net.au ([203.59.1.107]:38245 "EHLO webmail.icp-qv1-irony2.iinet.net.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759944AbXHQLuu (ORCPT ); Fri, 17 Aug 2007 07:50:50 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8CAAgoxUbLrQKa/2dsb2JhbAA X-IronPort-AV: i="4.19,275,1183305600"; d="scan'208"; a="184803854:sNHT8781468" Message-ID: <46C58B93.5000408@cyberone.com.au> Date: Fri, 17 Aug 2007 21:50:43 +1000 From: Nick Piggin User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051007 Debian/1.7.12-1 X-Accept-Language: en MIME-Version: 1.0 To: Satyam Sharma CC: Stefan Richter , paulmck@linux.vnet.ibm.com, Herbert Xu , Paul Mackerras , Christoph Lameter , Chris Snook , Linux Kernel Mailing List , linux-arch@vger.kernel.org, Linus Torvalds , netdev@vger.kernel.org, Andrew Morton , ak@suse.de, heiko.carstens@de.ibm.com, davem@davemloft.net, schwidefsky@de.ibm.com, wensong@linux-vs.org, horms@verge.net.au, wjiang@resilience.com, cfriesen@nortel.com, zlynx@acm.org, rpjday@mindspring.com, jesper.juhl@gmail.com, segher@kernel.crashing.org Subject: Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures References: <18115.52863.638655.658466@cargo.ozlabs.ibm.com> <20070816053945.GB32442@gondor.apana.org.au> <18115.62741.807704.969977@cargo.ozlabs.ibm.com> <20070816070907.GA964@gondor.apana.org.au> <46C40587.7050708@s5r6.in-berlin.de> <20070816081049.GA1431@gondor.apana.org.au> <46C41EE4.9090806@s5r6.in-berlin.de> <46C42767.4070104@s5r6.in-berlin.de> <20070816104250.GB2927@gondor.apana.org.au> <20070816163441.GB16957@linux.vnet.ibm.com> <46C512EB.7020603@yahoo.com.au> <46C54D74.60101@s5r6.in-berlin.de> <46C556F1.8000407@yahoo.com.au> <46C5672E.4060003@cyberone.com.au> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1854 Lines: 53 Satyam Sharma wrote: > >On Fri, 17 Aug 2007, Nick Piggin wrote: > > >>Satyam Sharma wrote: >> >>It is very obvious. msleep calls schedule() (ie. sleeps), which is >>always a barrier. >> > >Probably you didn't mean that, but no, schedule() is not barrier because >it sleeps. It's a barrier because it's invisible. > Where did I say it is a barrier because it sleeps? It is always a barrier because, at the lowest level, schedule() (and thus anything that sleeps) is defined to always be a barrier. Regardless of whatever obscure means the compiler might need to infer the barrier. In other words, you can ignore those obscure details because schedule() is always going to have an explicit barrier in it. >>The "unobvious" thing is that you wanted to know how the compiler knows >>a function is a barrier -- answer is that if it does not *know* it is not >>a barrier, it must assume it is a barrier. >> > >True, that's clearly what happens here. But are you're definitely joking >that this is "obvious" in terms of code-clarity, right? > No. If you accept that barrier() is implemented correctly, and you know that sleeping is defined to be a barrier, then its perfectly clear. You don't have to know how the compiler "knows" that some function contains a barrier. >Just 5 minutes back you mentioned elsewhere you like seeing lots of >explicit calls to barrier() (with comments, no less, hmm? :-) > Sure, but there are well known primitives which contain barriers, and trivial recognisable code sequences for which you don't need comments. waiting-loops using sleeps or cpu_relax() are prime examples. - 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/