Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Sep 2012 08:37:05 +0100
From:      Attilio Rao <attilio@freebsd.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        Davide Italiano <davide@freebsd.org>, src-committers@freebsd.org, John Baldwin <jhb@freebsd.org>, Jeff Roberson <jeff@freebsd.org>, Dimitry Andric <dim@freebsd.org>, svn-src-projects@freebsd.org
Subject:   Re: svn commit: r238907 - projects/calloutng/sys/kern
Message-ID:  <CAJ-FndD90M2BAEcrjWG0YFCUrNu5Yad-5sRv=n8QXFbtYmo%2BjQ@mail.gmail.com>
In-Reply-To: <20120919041811.GM37286@deviant.kiev.zoral.com.ua>
References:  <201207301350.q6UDobCI099069@svn.freebsd.org> <CAJ-FndBj8tpC_BJXs_RH8sG2TBG8yA=Lxu3-GTVT9Ap_zOCuVQ@mail.gmail.com> <CAJ-FndDnO7wjnWPV0tTu%2BUGHjsxa3YDarMxmyei3ZmjLAFvRkQ@mail.gmail.com> <201207301732.33474.jhb@freebsd.org> <CAJ-FndD5EO12xsWOAe6u0EvX00q33wxO4OivnGjzj0=T2Oe8uA@mail.gmail.com> <CAJ-FndCRg0UCThFkatp=tw7rUWWCvhsApLE=iztLpxpGBC1F9w@mail.gmail.com> <20120918083324.GX37286@deviant.kiev.zoral.com.ua> <CAJ-FndAXw6zjXr=zB3gAVQDKUV_K4=SF39iYQQOV23NkfJ=MPw@mail.gmail.com> <CAJ-FndCmg-GdTf9FWQGZPYB-iGuEt-JH8HrCL%2BwaOqJ%2B8ZUbHQ@mail.gmail.com> <20120919041811.GM37286@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Sep 19, 2012 at 5:18 AM, Konstantin Belousov
<kostikbel@gmail.com> wrote:
> On Tue, Sep 18, 2012 at 08:00:48PM +0100, Attilio Rao wrote:
>> On Tue, Sep 18, 2012 at 4:30 PM, Attilio Rao <attilio@freebsd.org> wrote:
>> > On 9/18/12, Konstantin Belousov <kostikbel@gmail.com> wrote:
>> >> Traditionally, we do provide the fallback for non-GNUC compilers, by
>> >> defining extern function with the compatible signature. In this case,
>> >> the empty function just works for the purpose, although with higher
>> >> overhead than the GNUC case.
>> >
>> > I agree, we need a fallback here. Unfortunately I'm buried with job
>> > stuff but I will provide an errata patch ASAP.
>>
>> Here is the patch. I didn't use a real extern function body for it,
>> but just went with an empty macro.
>>
>> Attilio
>
>> +/*
>> + * Compiler memory barriers, specific to gcc and clang.
>> + */
>> +#if defined(__GNUC__)
>> +#define        __compiler_membar()     __asm __volatile(" " : : : "memory")
>> +#else
>> +#define        __compiler_membar()     struct __hack
>> +#endif
>
> I would not call this an empty macro. If this works at all, it requires
> c99 compiler. Why not just do
> extern void __compiler_membar(void);
> for !GNUC. Note that we never supplied actual implementation for the
> placeholders, as evidenced e.g. by cpufunc.h or fpu.c.

So the main reason for this is to keep compliancy with c'89? Are you
sure it is so important nowadays?
I'm always under the impression that we are already using c'99
specific features, like structs initializers, etc.

Attilio


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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-FndD90M2BAEcrjWG0YFCUrNu5Yad-5sRv=n8QXFbtYmo%2BjQ>