From owner-freebsd-threads@FreeBSD.ORG Mon Apr 23 11:26:55 2012 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8D439106566C for ; Mon, 23 Apr 2012 11:26:55 +0000 (UTC) (envelope-from yfw.bsd@gmail.com) Received: from mail-ob0-f182.google.com (mail-ob0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id 4F2D58FC08 for ; Mon, 23 Apr 2012 11:26:55 +0000 (UTC) Received: by obqv19 with SMTP id v19so17853572obq.13 for ; Mon, 23 Apr 2012 04:26:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=qihIEsDuVpWLiT/2hXUQEVWVvK6/OsbnX1xkWo913Kk=; b=B2fRAxF34iooiH2iAXbvrpKPlfgUtUeBopv7ycclEKKX/TJV7+jk1pCVG4GpVJu5qz soAliX0q75JD+7RrhOiHCu53cw4OgHmL94AvYKyyWc7K+g+YLlq3U7XX/H6tYP6ZVdWT 1TbMF/QcFyOmyqvohL2RM93HAKgMIQqVYuVAAASC3mdIyMxKPn5+6Jk5gZ5MjmC5VSYN V5KuFfOnIjtvbBb/9aSydzyf4G/x1yq47n3rTw4oJ9VfLnIFGM+pLKIM/1fAEjqYwSTY how18xJLf9ud8meBLz0iD/GIhJulijNHuvYz6mTA2G/C/nY05nxPpnoUUsBdTRcygPdW d3MQ== MIME-Version: 1.0 Received: by 10.60.29.39 with SMTP id g7mr2929689oeh.6.1335180415000; Mon, 23 Apr 2012 04:26:55 -0700 (PDT) Received: by 10.60.125.135 with HTTP; Mon, 23 Apr 2012 04:26:54 -0700 (PDT) In-Reply-To: <20120423094043.GS32749@zxy.spb.ru> References: <20120423084120.GD76983@zxy.spb.ru> <20120423094043.GS32749@zxy.spb.ru> Date: Mon, 23 Apr 2012 19:26:54 +0800 Message-ID: From: Fengwei yin To: Slawa Olhovchenkov Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: jack.ren@intel.com, freebsd-threads@freebsd.org Subject: Re: About the memory barrier in BSD libc X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Apr 2012 11:26:55 -0000 On Mon, Apr 23, 2012 at 5:40 PM, Slawa Olhovchenkov wrote: > On Mon, Apr 23, 2012 at 05:32:24PM +0800, Fengwei yin wrote: > >> On Mon, Apr 23, 2012 at 4:41 PM, Slawa Olhovchenkov wro= te: >> > On Mon, Apr 23, 2012 at 02:56:03PM +0800, Fengwei yin wrote: >> > >> >> Hi list, >> >> If this is not correct question on the list, please let me know and >> >> sorry for noise. >> >> >> >> I have a question regarding the BSD libc for SMP arch. I didn't see >> >> memory barrier used in libc. >> >> How can we make sure it's safe on SMP arch? >> > >> > /usr/include/machine/atomic.h: >> > >> > #define mb() =A0 =A0__asm __volatile("lock; addl $0,(%%esp)" : : : "me= mory") >> > #define wmb() =A0 __asm __volatile("lock; addl $0,(%%esp)" : : : "memo= ry") >> > #define rmb() =A0 __asm __volatile("lock; addl $0,(%%esp)" : : : "memo= ry") >> > >> >> Thanks for the information. But it looks no body use it in libc. > > I think no body in libc need memory barrier: libc don't work with > peripheral, for atomic opertions used different macros. If we check the usage of __sinit(), it is a typical singleton pattern which needs memory barrier to make sure no potential SMP issue. Or did I miss something here? Regards Yin, Fengwei