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>