On Wed, 2013-03-13 at 04:36 -0700, Michel Lespinasse wrote: > Have you considered building your ldlock based on lib/rwsem-spinlock.c > instead ? i.e. having an internal spinlock to protect the ldisc > reference count and the reader and writer queues. This would seem much > simpler get right. The downside would be that a spinlock would be > taken for a short time whenever an ldisc reference is taken or > released. I don't expect that the internal spinlock would get > significant contention ? That would have been too easy :) TBH, I hadn't considered it until I was most the way through a working atomic version. I had already split the reader/writer wait lists. And figured out how to always use the wait bias for every waiting reader and writer -- rather than the rwsem way of testing for an empty list -- which made the timeout handling easier. At the time, the only thing that I was still struggling with was recursion, and the spinlock flavor wasn't going to fix that. So I just kept with the atomic flavor. -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html