Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jun 2013 21:44:56 +0200
From:      Ed Schouten <ed@80386.nl>
To:        Tijl Coosemans <tijl@coosemans.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r252411 - head/sys/sys
Message-ID:  <CAJOYFBDB59tLCVT1P3sdcP%2Bj8U746MshD39nRizZd15xQ00vbw@mail.gmail.com>
In-Reply-To: <51D07C10.2000509@coosemans.org>
References:  <201306300854.r5U8sfYS018720@svn.freebsd.org> <51D07C10.2000509@coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Tijl,

2013/6/30 Tijl Coosemans <tijl@coosemans.org>:
> I don't think you can use static inline. Standard library functions need
> to have external linkage, which means you have to implement them in libc.

First of all, I could be mistaken, so please correct me if I say
something wrong here.

If my memory serves me right, this requirement is part of POSIX -- not
ISO C. As this is interface is not yet part of any version of POSIX
and at least I am not in the possession of a draft of POSIX that
specified these functions, I think it would be unwise to add this to
the C library. I think there is nothing that would forbid us to use
static inline functions.

As C11 merely names these things "functions", I think using a static
inline function would currently be the wisest thing to do. To my
knowledge the current version of the code at least complies with the
standards at hand.

> I think you can just use unsigned char. Only the test-and-set and clear
> operations need to be atomic. Anything else (like copy-assignment)
> doesn't have to be atomic. Both clang and gcc have __atomic_test_and_set
> and __atomic_clear built-ins.

Ah, nice. I was unaware of the existence of these functions. I'll see
if I can switch our header to use that instead. Still, I think it's a
bit weird that the API provided by both Clang and GCC provides such a
poor abstraction. For example, if it weren't for our implementation of
Restartable Atomic Sequences, even unsigned char would not have been a
lockless type on ARMv5.

--
Ed Schouten <ed@80386.nl>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJOYFBDB59tLCVT1P3sdcP%2Bj8U746MshD39nRizZd15xQ00vbw>