rwsem: simplify __rwsem_do_wake
authorMichel Lespinasse <walken@google.com>
Tue, 7 May 2013 13:45:58 +0000 (06:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 7 May 2013 14:20:16 +0000 (07:20 -0700)
commit8cf5322ce69afea1fab6a6270db24d057d664798
treea7b49b135dc7703a4a709562178a847fb9bc4f77
parent9b0fc9c09f1b262b7fe697eba6b05095d78850e5
rwsem: simplify __rwsem_do_wake

This is mostly for cleanup value:

- We don't need several gotos to handle the case where the first
  waiter is a writer. Two simple tests will do (and generate very
  similar code).

- In the remainder of the function, we know the first waiter is a reader,
  so we don't have to double check that. We can use do..while loops
  to iterate over the readers to wake (generates slightly better code).

Signed-off-by: Michel Lespinasse <walken@google.com>
Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
lib/rwsem-spinlock.c
lib/rwsem.c