On 12/18/2015 12:11 PM, Torvald Riegel wrote: > On Wed, 2015-12-16 at 16:54 +0100, Michael Kerrisk (man-pages) wrote: >> Hello Darren, >> >> On 12/15/2015 10:18 PM, Darren Hart wrote: >>> On Tue, Dec 15, 2015 at 02:43:50PM +0100, Michael Kerrisk (man-pages) wrote: >> >> [...] >> >>>> When executing a futex operation that requests to block a thread, >>>> the kernel will block only if the futex word has the value that >>>> the calling thread supplied (as one of the arguments of the >>>> futex() call) as the expected value of the futex word. The load‐ >>>> ing of the futex word's value, the comparison of that value with >>>> the expected value, and the actual blocking will happen atomi‐ >>>> >>>> FIXME: for next line, it would be good to have an explanation of >>>> "totally ordered" somewhere around here. >>>> >>>> cally and totally ordered with respect to concurrently executing >>> >>> Totally ordered with respect futex operations refers to semantics of the >>> ACQUIRE/RELEASE operations and how they impact ordering of memory reads and >>> writes. The kernel futex operations are protected by spinlocks, which ensure >>> that that all operations are serialized with respect to one another. >>> >>> This is a lot to attempt to define in this document. Perhaps a reference to >>> linux/Documentation/memory-barriers.txt as a footnote would be sufficient? >>> Or >>> perhaps for this manual, "serialized" would be sufficient, with a footnote >>> regarding "totally ordered" and a pointer to the memory-barrier >>> documentation? >> >> I think I'll just settle for writing serialized in the man page, and be >> done with it :-). > > I'd prefer if you'd not just use "serialized" :)
Sigh :-). Okay--removed. > Eventually, I'd prefer > if we can explain the semantics for the user in terms of the terminology > and semantics of the memory model of the programming language that users > will likely use to call futex ops (ie, C11 / C++11). And I'd be really happy to see such an explanation land in the page. Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/