Re: [PATCH v3 3/5] locking/qspinlock: Introduce CNA into the slow path of qspinlock

From: Alex Kogan
Date: Wed Jul 17 2019 - 10:43:20 EST



>> * mcs_node
>> * +--------+ +----+ +----+
>> * | next | ---> |next| -> ... |next| -> NULL [Main queue]
>> * | locked | -+ +----+ +----+
>> * +--------+ |
>> * | +---------+ +----+
>> * +-> |mcs::next| -> ... |next| -> NULL [Secondary queue]
>> * |cna::tail| -+ +----+
>> * +---------+ | ^
>> * +--------+
>> *
>> * N.B. locked = 1 if secondary queue is absent.
>> */


I would change mcs_node to cna_node, next to mcs::next and locked to mcs::locked
in the very first node. Other than that, this is great. Thanks, Peter and Longman!

I should probably stick this graphic in the comment at the top of the file,
instead of a comment to find_successor() (or whatever this function ends up
being called).

â Alex