Module Name: src
Committed By: ad
Date: Sat Mar 14 20:25:47 UTC 2020
Modified Files:
src/tests/rump/kernspace: busypage.c
Log Message:
Catch up with reality.
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/rump/kernspace/busypage.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/rump/kernspace/busypage.c
diff -u src/tests/rump/kernspace/busypage.c:1.6 src/tests/rump/kernspace/busypage.c:1.7
--- src/tests/rump/kernspace/busypage.c:1.6 Sun Feb 23 15:46:43 2020
+++ src/tests/rump/kernspace/busypage.c Sat Mar 14 20:25:46 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: busypage.c,v 1.6 2020/02/23 15:46:43 ad Exp $ */
+/* $NetBSD: busypage.c,v 1.7 2020/03/14 20:25:46 ad Exp $ */
/*-
* Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
#include <sys/cdefs.h>
#if !defined(lint)
-__RCSID("$NetBSD: busypage.c,v 1.6 2020/02/23 15:46:43 ad Exp $");
+__RCSID("$NetBSD: busypage.c,v 1.7 2020/03/14 20:25:46 ad Exp $");
#endif /* !lint */
#include <sys/param.h>
@@ -52,15 +52,14 @@ static void
thread(void *arg)
{
- rw_enter(uobj->vmobjlock, RW_WRITER);
+ mutex_enter(&testpg->interlock);
threadrun = true;
-#ifdef notyet
cv_signal(&tcv);
-#else
- wakeup(&tcv);
-#endif
- testpg->flags |= PG_WANTED;
- UVM_UNLOCK_AND_WAIT_RW(testpg, uobj->vmobjlock, false, "tw", 0);
+ mutex_exit(&testpg->interlock);
+
+ rw_enter(uobj->vmobjlock, RW_READER);
+ uvm_pagewait(testpg, uobj->vmobjlock, "tw");
+
kthread_exit(0);
}
@@ -84,16 +83,17 @@ rumptest_busypage()
if (rv)
panic("thread creation failed: %d", rv);
- rw_enter(uobj->vmobjlock, RW_WRITER);
-#ifdef notyet
- while (!threadrun)
- cv_wait(&tcv, uobj->vmobjlock);
-#else
+ kpause("lolgic", false, mstohz(100), NULL);
+
+ mutex_enter(&testpg->interlock);
while (!threadrun)
- rwtsleep(&tcv, 0, "nutter", 0, uobj->vmobjlock);
-#endif
+ cv_wait(&tcv, &testpg->interlock);
+ mutex_exit(&testpg->interlock);
- uvm_page_unbusy(&testpg, 1);
+ rw_enter(uobj->vmobjlock, RW_WRITER);
+ mutex_enter(&testpg->interlock);
+ uvm_pageunbusy(testpg);
+ mutex_exit(&testpg->interlock);
rw_exit(uobj->vmobjlock);
rv = kthread_join(newl);