From owner-p4-projects@FreeBSD.ORG Sat Mar 20 15:33:38 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BAB9116A4D1; Sat, 20 Mar 2004 15:33:37 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 94E6F16A4CE for ; Sat, 20 Mar 2004 15:33:37 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8E46843D3F for ; Sat, 20 Mar 2004 15:33:37 -0800 (PST) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i2KNXbGe069100 for ; Sat, 20 Mar 2004 15:33:37 -0800 (PST) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i2KNXaAd069097 for perforce@freebsd.org; Sat, 20 Mar 2004 15:33:36 -0800 (PST) (envelope-from marcel@freebsd.org) Date: Sat, 20 Mar 2004 15:33:36 -0800 (PST) Message-Id: <200403202333.i2KNXaAd069097@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 49408 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Mar 2004 23:33:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=49408 Change 49408 by marcel@marcel_nfs on 2004/03/20 15:33:06 Turn the debugger into a critical section and stop any other CPU in SMP configurations. Affected files ... .. //depot/projects/gdb/sys/kern/subr_kdb.c#6 edit Differences ... ==== //depot/projects/gdb/sys/kern/subr_kdb.c#6 (text+ko) ==== @@ -31,6 +31,8 @@ #include #include #include +#include +#include int kdb_active = 0; struct kdb_dbbe *kdb_cur = NULL; @@ -156,11 +158,24 @@ { int handled; - if (kdb_cur != NULL && kdb_cur->dbbe_trap != NULL) { - kdb_active = 1; - handled = kdb_cur->dbbe_trap(type, code, tf); - kdb_active = 0; - } else - handled = 0; + if (kdb_cur == NULL || kdb_cur->dbbe_trap == NULL) + return (0); + + critical_enter(); + +#ifdef SMP + stop_cpus(PCPU_GET(other_cpus)); +#endif + + kdb_active++; + handled = kdb_cur->dbbe_trap(type, code, tf); + kdb_active--; + +#ifdef SMP + restart_cpus(stopped_cpus); +#endif + + critical_exit(); + return (handled); }