Hello, Linus. On Tue, Jan 31, 2017 at 01:41:17PM -0800, Linus Torvalds wrote: > On Tue, Jan 31, 2017 at 1:32 PM, Linus Torvalds > <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > I've pulled this, but I really think it's papering over the real > > issue. Adding "linux-arch" mailing list to ask architecture > > maintainers to check their implementation of the atomic ops that > > return a truth value. Yeah, for sure. > For example, looking at the x86-32 version, I see this: > > static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) > ... > return (int)a; > > which looks really horribly wrong, but the assembly implementation > actually returns 0/1 in %eax so it ends up being right - just > confusingly so. > > Also, to make things more confusing, the underscore version > (__atomic_add_unless()) actually returns the old value, not the truth > value of the comparison. > > So this area definitely is messy. The x86-64 versions actually look > fairly clean and return nice boolean values. We have a similar mess with bitops too. x86 is cleaned up to have bool returns but the generic implementation and a lot of other archs return the tested bit instead of 1/0. It'd be great to make all the boolean functions actually return bool. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html