PERFORCE change 132005 for review

John Birrell jb at FreeBSD.org
Sat Dec 29 18:18:00 PST 2007


http://perforce.freebsd.org/chv.cgi?CH=132005

Change 132005 by jb at jb_freebsd1 on 2007/12/30 02:17:04

	Use cpu_lock and solaris_cpu from the opensolaris module from now on.
	This stuff is shared with at least the dtrace module.

Affected files ...

.. //depot/projects/dtrace/src/sys/cddl/amd64/cyclic_machdep.c#5 edit
.. //depot/projects/dtrace/src/sys/cddl/kern/kern_cyclic.c#9 edit
.. //depot/projects/dtrace/src/sys/contrib/opensolaris/uts/common/os/cyclic.c#12 edit
.. //depot/projects/dtrace/src/sys/contrib/opensolaris/uts/common/sys/cyclic.h#8 edit

Differences ...

==== //depot/projects/dtrace/src/sys/cddl/amd64/cyclic_machdep.c#5 (text+ko) ====

@@ -63,7 +63,7 @@
 static void
 cyclic_swi_low(void *dummy)
 {
-	cpu_t *c = &cyclic_cpu[curcpu];
+	cpu_t *c = &solaris_cpu[curcpu];
 
 	c->cpu_intr_actv |= (1 << CY_LOW_LEVEL);
 
@@ -75,7 +75,7 @@
 static void
 cyclic_swi_lock(void *dummy)
 {
-	cpu_t *c = &cyclic_cpu[curcpu];
+	cpu_t *c = &solaris_cpu[curcpu];
 
 	c->cpu_intr_actv |= (1 << CY_LOCK_LEVEL);
 
@@ -195,7 +195,7 @@
 	 * If the target CPU is the current one, just call the
 	 * function. This covers the non-SMP case.
 	 */
-	if (c == &cyclic_cpu[curcpu])
+	if (c == &solaris_cpu[curcpu])
 		(*func)(param);
 	else
 		printf("%s:%s(%d): Need to have a way to execute the function on another CPU\n",__FUNCTION__,__FILE__,__LINE__);

==== //depot/projects/dtrace/src/sys/cddl/kern/kern_cyclic.c#9 (text+ko) ====

@@ -32,22 +32,8 @@
 static void
 cyclic_load(void *dummy)
 {
-	int i;
-
-	mutex_init(&cpu_lock, "Cyclic CPU lock", MUTEX_DEFAULT, NULL);
-
 	mutex_enter(&cpu_lock);
 
-	/*
-	 * "Enable" all CPUs even though they may not exist just so
-	 * that the asserts work. On FreeBSD, if a CPU exists, it is
-	 * enabled.
-	 */
-	for (i = 0; i < SMP_MAXCPU; i++) {
-		cyclic_cpu[i].cpuid = i;
-		cyclic_cpu[i].cpu_flags &= CPU_ENABLE;
-	}
-
 	/* Initialise the machine-dependent backend. */
 	cyclic_machdep_init();
 
@@ -65,8 +51,6 @@
 	cyclic_machdep_uninit();
 
 	mutex_exit(&cpu_lock);
-
-	mutex_destroy(&cpu_lock);
 }
 
 SYSUNINIT(cyclic_unregister, SI_SUB_CYCLIC, SI_ORDER_SECOND, cyclic_unload, NULL);
@@ -78,7 +62,7 @@
 static void
 cyclic_clock(void)
 {
-	cpu_t *c = &cyclic_cpu[curcpu];
+	cpu_t *c = &solaris_cpu[curcpu];
 
 	if (c->cpu_cyclic != NULL) {
 		c->cpu_intr_actv |= (1 << CY_HIGH_LEVEL);
@@ -116,3 +100,4 @@
 
 DEV_MODULE(cyclic, cyclic_modevent, NULL);
 MODULE_VERSION(cyclic, 1);
+MODULE_DEPEND(cyclic, opensolaris, 1, 1, 1);

==== //depot/projects/dtrace/src/sys/contrib/opensolaris/uts/common/os/cyclic.c#12 (text) ====

@@ -568,8 +568,6 @@
 #include <sys/kernel.h>
 #include <sys/conf.h>
 #define gethrtime_unscaled	dtrace_gethrtime
-static cyclic_cpu_t	cyclic_cpu[SMP_MAXCPU];
-kmutex_t		cpu_lock;
 #endif
 
 #ifdef CYCLIC_TRACE
@@ -1567,7 +1565,7 @@
 	 * FreeBSD doesn't have cpu partitions, so just use the current
 	 * CPU for now.
 	 */
-	cyclic_cpu_t *c = &cyclic_cpu[curcpu];
+	solaris_cpu_t *c = &solaris_cpu[curcpu];
 #endif
 
 	return (c->cpu_cyclic);
@@ -2649,7 +2647,7 @@
 		if (pcpu_find(i) == NULL)
 			continue;
 
-		c = &cyclic_cpu[i];
+		c = &solaris_cpu[i];
 #endif
 
 		if ((cpu = c->cpu_cyclic) == NULL)
@@ -2897,8 +2895,8 @@
 	cyclic_configure(CPU);
 	cyclic_online(CPU);
 #else
-	cyclic_configure(&cyclic_cpu[curcpu]);
-	cyclic_online(&cyclic_cpu[curcpu]);
+	cyclic_configure(&solaris_cpu[curcpu]);
+	cyclic_online(&solaris_cpu[curcpu]);
 #endif
 }
 
@@ -2930,7 +2928,7 @@
 		if (pcpu_find(i) == NULL)
 			continue;
 
-		c = &cyclic_cpu[i];
+		c = &solaris_cpu[i];
 #endif
 		if (c->cpu_cyclic == NULL) {
 			cyclic_configure(c);
@@ -2958,7 +2956,7 @@
 		if ((pc = pcpu_find(id)) == NULL)
 			continue;
 
-		c = &cyclic_cpu[id];
+		c = &solaris_cpu[id];
 
 		if (c->cpu_cyclic == NULL)
 			continue;
@@ -3386,7 +3384,7 @@
 		if (pcpu_find(i) == NULL)
 			continue;
 
-		c = &cyclic_cpu[i];
+		c = &solaris_cpu[i];
 #endif
 		cpu = c->cpu_cyclic;
 		be = cpu->cyp_backend;
@@ -3454,7 +3452,7 @@
 		if (pcpu_find(i) == NULL)
 			continue;
 
-		c = &cyclic_cpu[i];
+		c = &solaris_cpu[i];
 #endif
 
 		cpu = c->cpu_cyclic;

==== //depot/projects/dtrace/src/sys/contrib/opensolaris/uts/common/sys/cyclic.h#8 (text) ====

@@ -39,16 +39,7 @@
 #if defined(sun)
 #include <sys/cpupart.h>
 #else
-struct cyc_cpu;
 #define	cpupart_t	void
-#undef	cpu_t
-#define cpu_t   cyclic_cpu_t
-typedef struct {
-	int		cpuid;
-        struct cyc_cpu *cpu_cyclic;
-	uint32_t	cpu_flags;
-	uint_t		cpu_intr_actv;
-} cyclic_cpu_t; 
 #endif
 #endif /* !_ASM */
 


More information about the p4-projects mailing list