mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 08:46:46 +00:00
locking/percpu-rwsem: Export symbols for locktorture
This commit exports percpu_down_read(), percpu_down_write(), __percpu_init_rwsem(), percpu_up_read(), and percpu_up_write() to allow locktorture to test them when built as a module. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
095777c417
commit
302707fd7c
1 changed files with 5 additions and 0 deletions
|
@ -22,6 +22,7 @@ int __percpu_init_rwsem(struct percpu_rw_semaphore *brw,
|
||||||
init_waitqueue_head(&brw->write_waitq);
|
init_waitqueue_head(&brw->write_waitq);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(__percpu_init_rwsem);
|
||||||
|
|
||||||
void percpu_free_rwsem(struct percpu_rw_semaphore *brw)
|
void percpu_free_rwsem(struct percpu_rw_semaphore *brw)
|
||||||
{
|
{
|
||||||
|
@ -87,6 +88,7 @@ void percpu_down_read(struct percpu_rw_semaphore *brw)
|
||||||
/* avoid up_read()->rwsem_release() */
|
/* avoid up_read()->rwsem_release() */
|
||||||
__up_read(&brw->rw_sem);
|
__up_read(&brw->rw_sem);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(percpu_down_read);
|
||||||
|
|
||||||
int percpu_down_read_trylock(struct percpu_rw_semaphore *brw)
|
int percpu_down_read_trylock(struct percpu_rw_semaphore *brw)
|
||||||
{
|
{
|
||||||
|
@ -112,6 +114,7 @@ void percpu_up_read(struct percpu_rw_semaphore *brw)
|
||||||
if (atomic_dec_and_test(&brw->slow_read_ctr))
|
if (atomic_dec_and_test(&brw->slow_read_ctr))
|
||||||
wake_up_all(&brw->write_waitq);
|
wake_up_all(&brw->write_waitq);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(percpu_up_read);
|
||||||
|
|
||||||
static int clear_fast_ctr(struct percpu_rw_semaphore *brw)
|
static int clear_fast_ctr(struct percpu_rw_semaphore *brw)
|
||||||
{
|
{
|
||||||
|
@ -163,6 +166,7 @@ void percpu_down_write(struct percpu_rw_semaphore *brw)
|
||||||
/* wait for all readers to complete their percpu_up_read() */
|
/* wait for all readers to complete their percpu_up_read() */
|
||||||
wait_event(brw->write_waitq, !atomic_read(&brw->slow_read_ctr));
|
wait_event(brw->write_waitq, !atomic_read(&brw->slow_read_ctr));
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(percpu_down_write);
|
||||||
|
|
||||||
void percpu_up_write(struct percpu_rw_semaphore *brw)
|
void percpu_up_write(struct percpu_rw_semaphore *brw)
|
||||||
{
|
{
|
||||||
|
@ -176,3 +180,4 @@ void percpu_up_write(struct percpu_rw_semaphore *brw)
|
||||||
/* the last writer unblocks update_fast_ctr() */
|
/* the last writer unblocks update_fast_ctr() */
|
||||||
atomic_dec(&brw->write_ctr);
|
atomic_dec(&brw->write_ctr);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(percpu_up_write);
|
||||||
|
|
Loading…
Reference in a new issue