PERFORCE change 132543 for review
John Birrell
jb at FreeBSD.org
Fri Jan 4 20:40:46 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=132543
Change 132543 by jb at jb_freebsd1 on 2008/01/05 04:39:50
Remove my home-grown completion spin thingies and use the magical
qualities of smp_no_rendevous_barrier (which aren't at all obvious).
I'll need to revise this later for arches that are only UP.
Affected files ...
.. //depot/projects/dtrace/src/sys/cddl/amd64/cyclic_machdep.c#9 edit
.. //depot/projects/dtrace/src/sys/cddl/kern/cyclic.c#9 edit
.. //depot/projects/dtrace/src/sys/compat/opensolaris/sys/cyclic_impl.h#3 edit
Differences ...
==== //depot/projects/dtrace/src/sys/cddl/amd64/cyclic_machdep.c#9 (text+ko) ====
@@ -125,5 +125,5 @@
(*func)(param);
else
smp_rendezvous_cpus((cpumask_t) (1 << c->cpuid), NULL,
- func, NULL, param);
+ func, smp_no_rendevous_barrier, param);
}
==== //depot/projects/dtrace/src/sys/cddl/kern/cyclic.c#9 (text+ko) ====
@@ -481,9 +481,6 @@
cyc_backend_t *be = cpu->cyp_backend;
be->cyb_enable(be->cyb_arg);
-
- /* Ack to cross call */
- argp->cyx_wait = 0;
}
static void
@@ -493,14 +490,9 @@
cyc_xcallarg_t arg;
arg.cyx_cpu = cpu;
- arg.cyx_wait = 1;
/* Cross call to the target CPU */
be->cyb_xcall(be->cyb_arg, cpu->cyp_cpu, cyclic_enable_xcall, &arg);
-
- /* Spin while waiting for the target CPU to ack the cross call */
- while (arg.cyx_wait == 1)
- /* spin */ ;
}
static void
@@ -511,9 +503,6 @@
cyc_backend_t *be = cpu->cyp_backend;
be->cyb_disable(be->cyb_arg);
-
- /* Ack to cross call */
- argp->cyx_wait = 0;
}
static void
@@ -523,14 +512,9 @@
cyc_xcallarg_t arg;
arg.cyx_cpu = cpu;
- arg.cyx_wait = 1;
/* Cross call to the target CPU */
be->cyb_xcall(be->cyb_arg, cpu->cyp_cpu, cyclic_disable_xcall, &arg);
-
- /* Spin while waiting for the target CPU to ack the cross call */
- while (arg.cyx_wait == 1)
- /* spin */ ;
}
static void
@@ -541,9 +525,6 @@
cyc_backend_t *be = cpu->cyp_backend;
be->cyb_reprogram(be->cyb_arg, argp->cyx_exp);
-
- /* Ack to cross call */
- argp->cyx_wait = 0;
}
static void
@@ -554,14 +535,9 @@
arg.cyx_cpu = cpu;
arg.cyx_exp = exp;
- arg.cyx_wait = 1;
/* Cross call to the target CPU */
be->cyb_xcall(be->cyb_arg, cpu->cyp_cpu, cyclic_reprogram_xcall, &arg);
-
- /* Spin while waiting for the target CPU to ack the cross call */
- while (arg.cyx_wait == 1)
- /* spin */ ;
}
/*
==== //depot/projects/dtrace/src/sys/compat/opensolaris/sys/cyclic_impl.h#3 (text+ko) ====
@@ -289,7 +289,6 @@
typedef struct cyc_xcallarg {
cyc_cpu_t *cyx_cpu;
hrtime_t cyx_exp;
- volatile int cyx_wait;
} cyc_xcallarg_t;
#define CY_DEFAULT_PERCPU 1
More information about the p4-projects
mailing list