Module Name:    src
Committed By:   pooka
Date:           Wed Apr 22 16:49:42 UTC 2015

Modified Files:
        src/sys/rump/librump/rumpkern: Makefile.rumpkern emul.c intr.c

Log Message:
Include kern_clock.c in rump kernels.


To generate a diff of this commit:
cvs rdiff -u -r1.155 -r1.156 src/sys/rump/librump/rumpkern/Makefile.rumpkern
cvs rdiff -u -r1.170 -r1.171 src/sys/rump/librump/rumpkern/emul.c
cvs rdiff -u -r1.50 -r1.51 src/sys/rump/librump/rumpkern/intr.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/librump/rumpkern/Makefile.rumpkern
diff -u src/sys/rump/librump/rumpkern/Makefile.rumpkern:1.155 src/sys/rump/librump/rumpkern/Makefile.rumpkern:1.156
--- src/sys/rump/librump/rumpkern/Makefile.rumpkern:1.155	Tue Apr 14 13:32:34 2015
+++ src/sys/rump/librump/rumpkern/Makefile.rumpkern	Wed Apr 22 16:49:42 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.rumpkern,v 1.155 2015/04/14 13:32:34 riastradh Exp $
+#	$NetBSD: Makefile.rumpkern,v 1.156 2015/04/22 16:49:42 pooka Exp $
 #
 
 .include "${RUMPTOP}/Makefile.rump"
@@ -71,6 +71,7 @@ SRCS+=	devsw.c
 SRCS+=	init_sysctl_base.c	\
 	kern_auth.c		\
 	kern_cfglock.c		\
+	kern_clock.c		\
 	kern_descrip.c		\
 	kern_event.c		\
 	kern_hook.c		\

Index: src/sys/rump/librump/rumpkern/emul.c
diff -u src/sys/rump/librump/rumpkern/emul.c:1.170 src/sys/rump/librump/rumpkern/emul.c:1.171
--- src/sys/rump/librump/rumpkern/emul.c:1.170	Sat Apr 18 15:49:18 2015
+++ src/sys/rump/librump/rumpkern/emul.c	Wed Apr 22 16:49:42 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: emul.c,v 1.170 2015/04/18 15:49:18 pooka Exp $	*/
+/*	$NetBSD: emul.c,v 1.171 2015/04/22 16:49:42 pooka Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.170 2015/04/18 15:49:18 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.171 2015/04/22 16:49:42 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/null.h>
@@ -85,7 +85,6 @@ struct vnode *rootvp;
 dev_t rootdev = NODEV;
 
 const int schedppq = 1;
-int hardclock_ticks;
 bool mp_online = false;
 struct timeval boottime;
 int cold = 1;

Index: src/sys/rump/librump/rumpkern/intr.c
diff -u src/sys/rump/librump/rumpkern/intr.c:1.50 src/sys/rump/librump/rumpkern/intr.c:1.51
--- src/sys/rump/librump/rumpkern/intr.c:1.50	Tue Apr 21 16:18:50 2015
+++ src/sys/rump/librump/rumpkern/intr.c	Wed Apr 22 16:49:42 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.c,v 1.50 2015/04/21 16:18:50 pooka Exp $	*/
+/*	$NetBSD: intr.c,v 1.51 2015/04/22 16:49:42 pooka Exp $	*/
 
 /*
  * Copyright (c) 2008-2010, 2015 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.50 2015/04/21 16:18:50 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.51 2015/04/22 16:49:42 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -82,22 +82,12 @@ kcondvar_t lbolt; /* Oh Kath Ra */
 
 static int ncpu_final;
 
-static u_int
-rumptc_get(struct timecounter *tc)
-{
-
-	KASSERT(rump_threads);
-	return (u_int)hardclock_ticks;
-}
-
-static struct timecounter rumptc = {
-	.tc_get_timecount	= rumptc_get,
-	.tc_poll_pps 		= NULL,
-	.tc_counter_mask	= ~0,
-	.tc_frequency		= 0,
-	.tc_name		= "rumpclk",
-	.tc_quality		= 0,
-};
+void noclock(void); void noclock(void) {return;}
+__strong_alias(sched_schedclock,noclock);
+__strong_alias(cpu_initclocks,noclock);
+__strong_alias(addupc_intr,noclock);
+__strong_alias(sched_tick,noclock);
+__strong_alias(setstatclockrate,noclock);
 
 /*
  * clock "interrupt"
@@ -106,10 +96,11 @@ static void
 doclock(void *noarg)
 {
 	struct timespec thetick, curclock;
+	struct clockframe frame;
 	int64_t sec;
 	long nsec;
 	int error;
-	int cpuindx = curcpu()->ci_index;
+	struct cpu_info *ci = curcpu();
 
 	error = rumpuser_clock_gettime(RUMPUSER_CLOCK_ABSMONO, &sec, &nsec);
 	if (error)
@@ -120,21 +111,24 @@ doclock(void *noarg)
 	thetick.tv_sec = 0;
 	thetick.tv_nsec = 1000000000/hz;
 
+	/* not used, so doesn't matter what we pass in */
+	memset(&frame, 0, sizeof(frame));
+
 	for (;;) {
-		callout_hardclock();
+		int lbolt_ticks = 0;
+
+		hardclock(&frame);
+		if (CPU_IS_PRIMARY(ci)) {
+			if (++lbolt_ticks >= hz) {
+				lbolt_ticks = 0;
+				cv_broadcast(&lbolt);
+			}
+		}
 
 		error = rumpuser_clock_sleep(RUMPUSER_CLOCK_ABSMONO,
 		    curclock.tv_sec, curclock.tv_nsec);
 		KASSERT(!error);
 		timespecadd(&curclock, &thetick, &curclock);
-
-		if (cpuindx != 0)
-			continue;
-
-		if ((++hardclock_ticks % hz) == 0) {
-			cv_broadcast(&lbolt);
-		}
-		tc_ticktock();
 	}
 }
 
@@ -304,8 +298,12 @@ softint_init(struct cpu_info *ci)
 	if (ci->ci_index == 0) {
 		int sithr_swap;
 
-		rumptc.tc_frequency = hz;
-		tc_init(&rumptc);
+		/* pretend that we have our own for these */
+		stathz = 1;
+		schedhz = 1;
+		profhz = 1;
+
+		initclocks();
 
 		/* create deferred softint threads */
 		mutex_enter(&sithr_emtx);

Reply via email to