summaryrefslogtreecommitdiff
path: root/include/linux/rwsem-spinlock.h
AgeCommit message (Collapse)Author
2011-09-13locking, rwsem: Annotate inner lock as rawThomas Gleixner
There is no reason to allow the lock protecting rwsems (the ownerless variant) to be preemptible on -rt. Convert it to raw. In mainline this change documents the low level nature of the lock - otherwise there's no functional difference. Lockdep and Sparse checking will work as usual. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2011-01-27rwsem: Move duplicate init macros and functions to linux/rwsem.hThomas Gleixner
The rwsem initializers and related macros and functions are mostly the same. Some of them lack the lockdep initializer, but having it in place does not matter for architectures which do not support lockdep. powerpc, sparc, x86: No functional change sh, s390: Removes the duplicate init_rwsem (inline and #define) alpha, ia64, xtensa: Use the lockdep capable init function in lib/rwsem.c which is just uninlining the init function for the LOCKDEP=n case Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: David Howells <dhowells@redhat.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Matt Turner <mattst88@gmail.com> Acked-by: Tony Luck <tony.luck@intel.com> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Paul Mundt <lethal@linux-sh.org> Acked-by: David Miller <davem@davemloft.net> Cc: Chris Zankel <chris@zankel.net> LKML-Reference: <20110126195833.771812729@linutronix.de>
2011-01-27rwsem: Cleanup includesThomas Gleixner
All rwsem implementations include the same headers. Include them from include/linux/rwsem.h Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: David Howells <dhowells@redhat.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Matt Turner <mattst88@gmail.com> Acked-by: Tony Luck <tony.luck@intel.com> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Paul Mundt <lethal@linux-sh.org> Acked-by: David Miller <davem@davemloft.net> Cc: Chris Zankel <chris@zankel.net> LKML-Reference: <20110126195833.483520950@linutronix.de>
2009-12-15rwsem: fix rwsem_is_locked() bugsAmerigo Wang
rwsem_is_locked() tests ->activity without locks, so we should always keep ->activity consistent. However, the code in __rwsem_do_wake() breaks this rule, it updates ->activity after _all_ readers waken up, this may give some reader a wrong ->activity value, thus cause rwsem_is_locked() behaves wrong. Quote from Andrew: " - we have one or more processes sleeping in down_read(), waiting for access. - we wake one or more processes up without altering ->activity - they start to run and they do rwsem_is_locked(). This incorrectly returns "false", because the waker process is still crunching away in __rwsem_do_wake(). - the waker now alters ->activity, but it was too late. " So we need get a spinlock to protect this. And rwsem_is_locked() should not block, thus we use spin_trylock_irqsave(). [akpm@linux-foundation.org: simplify code] Reported-by: Brian Behlendorf <behlendorf1@llnl.gov> Cc: Ben Woodard <bwoodard@llnl.gov> Cc: David Howells <dhowells@redhat.com> Signed-off-by: WANG Cong <amwang@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-13include/linux: Remove all users of FASTCALL() macroHarvey Harrison
FASTCALL() is always expanded to empty, remove it. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2006-12-07[PATCH] lockdep: name some old style locksPeter Zijlstra
Name some of the remaning 'old_style_spin_init' locks Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-03[PATCH] lockdep: prove rwsem locking correctnessIngo Molnar
Use the lock validator framework to prove rwsem locking correctness. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-03[PATCH] lockdep: clean up rwsemsIngo Molnar
Clean up rwsems. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-29[PATCH] add sem_is_read/write_locked()Rik Van Riel
Add sem_is_read/write_locked functions to the read/write semaphores, along the same lines of the *_is_locked spinlock functions. The swap token tuning patch uses sem_is_read_locked; sem_is_write_locked is added for completeness. Signed-off-by: Rik van Riel <riel@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2003-02-25[PATCH] Spelling fixes: don'tMichael Hayes
dont -> don't (135 occurrences)
2002-07-29Implement down_read_trylock() and down_write_trylock() and add aChristoph Hellwig
generic spinlock implementation for downgrade_write().
2002-02-04v2.4.4.4 -> v2.4.4.5Linus Torvalds
- Al Viro: fs cleanups - David Miller: sparc semaphores - Christoph Hellwig: VxFS update - Asit Mallick: set machine check bit with set_in_cr4 - Richard Henderson: fix alpha pci_controller_num(), sg_fill, SRM poweroff. - Johannes Erdfelt: USB updates - Cort Dougan: bitkeeper Id's on the ppc side - Matt Chapman: NFS file locking SMP lock fix - Alan Cox: further merging
2002-02-04v2.4.3.6 -> v2.4.3.7Linus Torvalds
- Johannes Erdfelt: USB updates - David Howells: more rw-sem stuff - David Miller: network callback cleanups and fixes - Jan Harkes: make Coda use the proper VFS layer interfaces, so that it can use "non-traditional-unix" filesystems without inode numbers for backing store.
2002-02-04v2.4.3.5 -> v2.4.3.6Linus Torvalds
- Chris Mason: daemonize reiserfs commit thread - Alan Cox: syncup (AFFS might even work, and official VIA workarounds) - Jeff Garzik: network driver updates - Paul Mackerras: PPP update - David Howells: more rw-sem cleanups, updates. Slowly getting somewhere.
2002-02-04v2.4.3.4 -> v2.4.3.5Linus Torvalds
- Mike Phillips: olympic driver update - Alan Cox: continued resyncing (lots of small stuff, big NTFS merge from Anton) - Martin Dalecki: cleanup (remove unused and unnecessary get_hardblocksize) - Chris Mason: fix potential reiserfs journal overflow - Jeff Garzik: network driver updates - David Miller: sparc fixes, some network cleanups
2002-02-04v2.4.3.3 -> v2.4.3.4Linus Torvalds
- David Miller: sparc rw semaphores moved over - Alan Cox: yet more resyncs - NIIBE Yutaka: Super-H driver update - David Howells: more rw-sem cleanups, updates - USB updates - Al Viro: filesystem init cleanup
2002-02-04v2.4.3.2 -> v2.4.3.3Linus Torvalds
- Hui-Fen Hsu: sis900 driver update - NIIBE Yutaka: Super-H update - Alan Cox: more resyncs (ARM down, but more to go) - David Miller: network zerocopy, Sparc sync, qlogic,FC fix, etc. - David Miller/me: get rid of various drivers hacks to do mmap alignment behind the back of the VM layer. Create a real protocol for it.