From owner-svn-src-user@FreeBSD.ORG  Wed Oct 24 15:32:52 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id DD32B629;
 Wed, 24 Oct 2012 15:32:51 +0000 (UTC)
 (envelope-from asmrookie@gmail.com)
Received: from mail-vc0-f182.google.com (mail-vc0-f182.google.com
 [209.85.220.182])
 by mx1.freebsd.org (Postfix) with ESMTP id A7A0C8FC0A;
 Wed, 24 Oct 2012 15:32:50 +0000 (UTC)
Received: by mail-vc0-f182.google.com with SMTP id fw7so829779vcb.13
 for <multiple recipients>; Wed, 24 Oct 2012 08:32:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:reply-to:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:cc:content-type;
 bh=XiF9Vj4wBr4Vkr12KwVVfEIGHvf+AXq/lUS1KxqT+eQ=;
 b=RyEtCX1CyDaNQAh1r9nGFJ68t8cr9VVzqEQ+qcLxA1O7OpnApusfgCNfPTuJadx3Lm
 teEsj7IWMhjruWasWC80dh04Df+I/lfvVs3Cb5EyPvJgAMIPyriYpL9qo7FF7L02v0bs
 2A7GDx/0AEq0vUMNU6vhczLVAAa5WyQaJ1D0rOW3oDjwb+2GREpTvN8Nigw3xn/rRe2R
 x3MJkVWU4QHkiHSMQho+mt2nBNOm4wv8OxYAGQ/pdUMgqz5d8JooBUmFy35OdmCYXB7z
 95ice2AsI6S4wFCnp8b3HT1jCC3ftXP49xusqqRGkmcP/Ed6XvY1VQ4ShYk+mCFysed8
 26xA==
MIME-Version: 1.0
Received: by 10.52.179.231 with SMTP id dj7mr21644955vdc.108.1351092767998;
 Wed, 24 Oct 2012 08:32:47 -0700 (PDT)
Sender: asmrookie@gmail.com
Received: by 10.220.150.197 with HTTP; Wed, 24 Oct 2012 08:32:47 -0700 (PDT)
In-Reply-To: <5088098D.9070206@freebsd.org>
References: <201210221418.q9MEINkr026751@svn.freebsd.org>
 <201210241005.38977.jhb@freebsd.org>
 <CAJ-FndBENEuyaH+2Q+igj39tdGmsHh=3arL-Cb2GP3i9WSr_hQ@mail.gmail.com>
 <201210241045.39211.jhb@freebsd.org>
 <CAJ-FndC=zV+HN1wr_CnSEY93VHT--w9cYPMhH8P53y+LvBSO7g@mail.gmail.com>
 <5088098D.9070206@freebsd.org>
Date: Wed, 24 Oct 2012 16:32:47 +0100
X-Google-Sender-Auth: ws9Sj4X4pYqdwpeByH7ehfDUXV8
Message-ID: <CAJ-FndArcGtgPtX4Vdp9EOBoWy=KZ1G5AgGE3-wGMfj+0U5iTg@mail.gmail.com>
Subject: Re: svn commit: r241889 - in user/andre/tcp_workqueue/sys: arm/arm
 cddl/compat/opensolaris/kern cddl/contrib/opensolaris/uts/common/dtrace
 cddl/contrib/opensolaris/uts/common/fs/zfs ddb dev/acpica dev/...
From: Attilio Rao <attilio@freebsd.org>
To: Andre Oppermann <andre@freebsd.org>
Content-Type: text/plain; charset=UTF-8
Cc: mdf@freebsd.org, src-committers@freebsd.org,
 Bruce Evans <brde@optusnet.com.au>, John Baldwin <jhb@freebsd.org>,
 svn-src-user@freebsd.org
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
Reply-To: attilio@FreeBSD.org
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 24 Oct 2012 15:32:52 -0000

On Wed, Oct 24, 2012 at 4:30 PM, Andre Oppermann <andre@freebsd.org> wrote:
> On 24.10.2012 17:09, Attilio Rao wrote:
>>
>> On Wed, Oct 24, 2012 at 3:45 PM, John Baldwin <jhb@freebsd.org> wrote:
>>>
>>> On Wednesday, October 24, 2012 10:34:34 am Attilio Rao wrote:
>>>>
>>>> On Wed, Oct 24, 2012 at 3:05 PM, John Baldwin <jhb@freebsd.org> wrote:
>>>>>
>>>>> On Tuesday, October 23, 2012 7:20:04 pm Andre Oppermann wrote:
>>>>>>
>>>>>> On 24.10.2012 00:15, mdf@FreeBSD.org wrote:
>>>>>>>
>>>>>>> On Tue, Oct 23, 2012 at 7:41 AM, Andre Oppermann <andre@freebsd.org>
>>>
>>> wrote:
>>>>>>>>
>>>>>>>> Struct mtx and MTX_SYSINIT always occur as pair next to each other.
>>>>>>>
>>>>>>>
>>>>>>> That doesn't matter.  Language basics like variable definitions
>>>>>>> should
>>>>>>> not be obscured by macros.  It either takes longer to figure out what
>>>>>>> a variable is (because one needs to look up the definition of the
>>>>>>> macro) or makes it almost impossible (because now e.g. cscope doesn't
>>>>>>> know this is a variable definition.
>>>>>>
>>>>>>
>>>>>> Sigh, cscope doesn't expand macros?
>>>>>>
>>>>>> Is there a way to do the cache line alignment in a sane way without
>>>>>> littering __aligned(CACHE_LINE_SIZE) all over the place?
>>>>>
>>>>>
>>>>> I was hoping to do something with an anonymous union or some such like:
>>>>>
>>>>> union mtx_aligned {
>>>>>          struct mtx;
>>>>>          char[roundup2(sizeof(struct mtx), CACHE_LINE_SIZE)];
>>>>> }
>>>>>
>>>>> I don't know if there is a useful way to define an 'aligned mutex' type
>>>>> that will transparently map to a 'struct mtx', e.g.:
>>>>>
>>>>> typedef struct mtx __aligned(CACHE_LINE_SIZE) aligned_mtx_t;
>>>>
>>>>
>>>> Unfortunately that doesn't work as I've verified with alc@ few months
>>>> ago.
>>>> The __aligned() attribute only works with structures definition, not
>>>> objects declaration.
>>>
>>>
>>> Are you saying that the typedef doesn't (I expect it doesn't), or that
>>> this
>>> doesn't:
>>>
>>> struct mtx foo __aligned(CACHE_LINE_SIZE);
>>
>>
>> I meant to say that such notation won't address the padding issue
>> which is as import as the alignment. Infact, for sensitive locks,
>> having just an aligned object is not really useful if the cacheline
>> gets shared.
>
>
> As far as I understand __aligned() not only aligns the start of the
> object but also ensures that is padded on a multiple of the alignment
> after the object.  So explicit padding after it is not necessary.

As I said it only works if you specify it in the struct definition,
otherwise it doesn't work.
You can try it yourself.

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein