Module Name:    src
Committed By:   riastradh
Date:           Sun Jul 16 23:05:53 UTC 2023

Modified Files:
        src/sys/rump/kern/lib/libsysproxy: sysproxy.c
        src/sys/rump/librump/rumpkern: locks.c

Log Message:
rump: Use l_sched.info, not l_private, for cv waits.

- l_sched is scheduler-private, used only by sched_m2.c, should be safe
- l_private is lwp-private, used by tls in user threads, would like to
  reuse for kthreads too


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/rump/kern/lib/libsysproxy/sysproxy.c
cvs rdiff -u -r1.84 -r1.85 src/sys/rump/librump/rumpkern/locks.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/rump/kern/lib/libsysproxy/sysproxy.c
diff -u src/sys/rump/kern/lib/libsysproxy/sysproxy.c:1.9 src/sys/rump/kern/lib/libsysproxy/sysproxy.c:1.10
--- src/sys/rump/kern/lib/libsysproxy/sysproxy.c:1.9	Sun Aug 21 10:24:23 2022
+++ src/sys/rump/kern/lib/libsysproxy/sysproxy.c	Sun Jul 16 23:05:53 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysproxy.c,v 1.9 2022/08/21 10:24:23 riastradh Exp $	*/
+/*	$NetBSD: sysproxy.c,v 1.10 2023/07/16 23:05:53 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2010, 2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysproxy.c,v 1.9 2022/08/21 10:24:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysproxy.c,v 1.10 2023/07/16 23:05:53 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/filedesc.h>
@@ -180,17 +180,17 @@ hyp_lwpexit(void)
 	/*
 	 * Ok, all lwps are either:
 	 *  1) not in the cv code
-	 *  2) sleeping on l->l_private
+	 *  2) sleeping on l->l_sched.info
 	 *  3) sleeping on p->p_waitcv
 	 *
-	 * Either way, l_private is stable until we set PS_RUMP_LWPEXIT
-	 * in p->p_sflag.
+	 * Either way, l_sched.info is stable until we set
+	 * PS_RUMP_LWPEXIT in p->p_sflag.
 	 */
 
 	mutex_enter(p->p_lock);
 	LIST_FOREACH(l, &p->p_lwps, l_sibling) {
-		if (l->l_private)
-			cv_broadcast(l->l_private);
+		if (l->l_sched.info)
+			cv_broadcast(l->l_sched.info);
 	}
 	p->p_sflag |= PS_RUMP_LWPEXIT;
 	cv_broadcast(&p->p_waitcv);

Index: src/sys/rump/librump/rumpkern/locks.c
diff -u src/sys/rump/librump/rumpkern/locks.c:1.84 src/sys/rump/librump/rumpkern/locks.c:1.85
--- src/sys/rump/librump/rumpkern/locks.c:1.84	Wed Apr 12 06:35:40 2023
+++ src/sys/rump/librump/rumpkern/locks.c	Sun Jul 16 23:05:53 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locks.c,v 1.84 2023/04/12 06:35:40 riastradh Exp $	*/
+/*	$NetBSD: locks.c,v 1.85 2023/07/16 23:05:53 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.84 2023/04/12 06:35:40 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.85 2023/07/16 23:05:53 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/kmem.h>
@@ -395,7 +395,7 @@ docvwait(kcondvar_t *cv, kmutex_t *mtx, 
 
 	UNLOCKED(mtx, false);
 
-	l->l_private = cv;
+	l->l_sched.info = cv;
 	rv = 0;
 	if (ts) {
 		if (rumpuser_cv_timedwait(RUMPCV(cv), RUMPMTX(mtx),
@@ -430,7 +430,7 @@ docvwait(kcondvar_t *cv, kmutex_t *mtx, 
 		mutex_enter(mtx);
 		rv = EINTR;
 	}
-	l->l_private = NULL;
+	l->l_sched.info = NULL;
 
 	return rv;
 }

Reply via email to