Implement a convenient gd_cpumask so we don't have to do 1 << gd->gd_cpuid
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 1 Apr 2004 17:40:59 +0000 (17:40 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 1 Apr 2004 17:40:59 +0000 (17:40 +0000)
all the time.

sys/kern/init_main.c
sys/kern/lwkt_ipiq.c
sys/sys/globaldata.h

index dfb5453..03f4448 100644 (file)
@@ -40,7 +40,7 @@
  *
  *     @(#)init_main.c 8.9 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/init_main.c,v 1.134.2.8 2003/06/06 20:21:32 tegge Exp $
- * $DragonFly: src/sys/kern/init_main.c,v 1.29 2004/03/30 19:14:11 dillon Exp $
+ * $DragonFly: src/sys/kern/init_main.c,v 1.30 2004/04/01 17:40:57 dillon Exp $
  */
 
 #include "opt_init_path.h"
@@ -613,6 +613,7 @@ mi_gdinit(struct globaldata *gd, int cpuid)
        TAILQ_INIT(&gd->gd_tdfreeq);    /* for pmap_{new,dispose}_thread() */
        TAILQ_INIT(&gd->gd_systimerq);
        gd->gd_cpuid = cpuid;
+       gd->gd_cpumask = (cpumask_t)1 << cpuid;
        lwkt_gdinit(gd);
        vm_map_entry_reserve_cpu_init(gd);
 }
index d1f4a86..9225a77 100644 (file)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/lwkt_ipiq.c,v 1.5 2004/03/08 03:03:54 dillon Exp $
+ * $DragonFly: src/sys/kern/lwkt_ipiq.c,v 1.6 2004/04/01 17:40:57 dillon Exp $
  */
 
 /*
@@ -468,7 +468,7 @@ lwkt_cpusync_start(cpumask_t mask, lwkt_cpusync_t poll)
                mask & gd->gd_other_cpus & smp_active_mask,
                (ipifunc_t)lwkt_cpusync_remote1, poll);
 #endif
-    if (mask & (1 << gd->gd_cpuid)) {
+    if (mask & gd->gd_cpumask) {
        if (poll->cs_run_func)
            poll->cs_run_func(poll);
     }
@@ -500,7 +500,7 @@ lwkt_cpusync_add(cpumask_t mask, lwkt_cpusync_t poll)
                mask & gd->gd_other_cpus & smp_active_mask,
                (ipifunc_t)lwkt_cpusync_remote1, poll);
 #endif
-    if (mask & (1 << gd->gd_cpuid)) {
+    if (mask & gd->gd_cpumask) {
        if (poll->cs_run_func)
            poll->cs_run_func(poll);
     }
@@ -532,7 +532,7 @@ lwkt_cpusync_finish(lwkt_cpusync_t poll)
     globaldata_t gd = mycpu;
 
     poll->cs_count = -1;
-    if (poll->cs_mask & (1 << gd->gd_cpuid)) {
+    if (poll->cs_mask & gd->gd_cpumask) {
        if (poll->cs_fin1_func)
            poll->cs_fin1_func(poll);
        if (poll->cs_fin2_func)
index b6848da..0066fa7 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/include/globaldata.h,v 1.11.2.1 2000/05/16 06:58:10 dillon Exp $
- * $DragonFly: src/sys/sys/globaldata.h,v 1.29 2004/03/30 19:14:13 dillon Exp $
+ * $DragonFly: src/sys/sys/globaldata.h,v 1.30 2004/04/01 17:40:59 dillon Exp $
  */
 
 #ifndef _SYS_GLOBALDATA_H_
@@ -97,6 +97,7 @@ struct globaldata {
        TAILQ_HEAD(,thread) gd_tdrunq[32];      /* runnable threads */
        __uint32_t      gd_runqmask;            /* which queues? */
        __uint32_t      gd_cpuid;
+       cpumask_t       gd_cpumask;             /* mask = 1<<cpuid */
        cpumask_t       gd_other_cpus;          /* mask of 'other' cpus */
        struct timeval  gd_stattv;
        int             gd_intr_nesting_level;  /* (for interrupts) */