Hi Tijl, 2013/6/30 Tijl Coosemans <t...@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 <e...@80386.nl> _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"