PERFORCE change 81398 for review
Robert Watson
rwatson at FreeBSD.org
Wed Aug 3 11:37:50 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=81398
Change 81398 by rwatson at rwatson_zoo on 2005/08/03 11:37:01
Integrate netsmp:
- stack_save()/subr_stack (cool!)
Loop back:
- if_addr_mtx and much IF_ADDR_LOCK()/IF_ADDR_UNLOCK() in protocols
and device drivers.
Affected files ...
.. //depot/projects/netsmp/src/sys/alpha/alpha/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/amd64/amd64/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/arm/arm/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/conf/files#4 integrate
.. //depot/projects/netsmp/src/sys/dev/aic7xxx/aicasm/Makefile#2 integrate
.. //depot/projects/netsmp/src/sys/dev/ath/if_ath.c#6 integrate
.. //depot/projects/netsmp/src/sys/dev/awi/awi.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/bfe/if_bfe.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/bge/if_bge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ed/if_ed.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/em/if_em.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/ex/if_ex.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/fe/if_fe.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/fxp/if_fxp.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/gem/if_gem.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/hme/if_hme.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ie/if_ie.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/if_ndis/if_ndis.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ixgb/if_ixgb.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/lge/if_lge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/lnc/if_lnc.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/my/if_my.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/nge/if_nge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/nve/if_nve.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/owi/if_owi.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/pdq/pdq_ifsubr.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ray/if_ray.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/re/if_re.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/sn/if_sn.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/snc/dp83932.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/tx/if_tx.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/txp/if_txp.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_aue.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_axe.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_cue.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_kue.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_rue.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_udav.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/vge/if_vge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/wi/if_wi.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/wl/if_wl.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/xe/if_xe.c#3 integrate
.. //depot/projects/netsmp/src/sys/i386/i386/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/ia64/ia64/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_lock.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_malloc.c#3 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_switch.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/subr_stack.c#1 branch
.. //depot/projects/netsmp/src/sys/kern/vfs_bio.c#3 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_default.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_subr.c#3 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_vnops.c#2 integrate
.. //depot/projects/netsmp/src/sys/net/if.c#7 integrate
.. //depot/projects/netsmp/src/sys/net/if_arcsubr.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/if_ethersubr.c#4 integrate
.. //depot/projects/netsmp/src/sys/net/if_fddisubr.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/if_iso88025subr.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/if_var.h#5 integrate
.. //depot/projects/netsmp/src/sys/netgraph/netgraph.h#3 integrate
.. //depot/projects/netsmp/src/sys/netgraph/ng_parse.c#2 integrate
.. //depot/projects/netsmp/src/sys/netinet/in_var.h#6 integrate
.. //depot/projects/netsmp/src/sys/netinet6/in6_var.h#6 integrate
.. //depot/projects/netsmp/src/sys/netinet6/mld6.c#5 integrate
.. //depot/projects/netsmp/src/sys/pci/if_dc.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_de.c#5 integrate
.. //depot/projects/netsmp/src/sys/pci/if_pcn.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_rl.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sf.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sis.c#4 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sk.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_ste.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_ti.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_tl.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_vr.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_wb.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_xl.c#4 integrate
.. //depot/projects/netsmp/src/sys/powerpc/powerpc/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/sparc64/sparc64/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/sys/lockmgr.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/mutex.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/stack.h#1 branch
.. //depot/projects/netsmp/src/sys/sys/vnode.h#2 integrate
Differences ...
==== //depot/projects/netsmp/src/sys/alpha/alpha/db_trace.c#2 (text+ko) ====
@@ -42,12 +42,14 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
/*__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.9 2000/12/13 03:16:36 mycroft Exp $");*/
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/db_trace.c,v 1.23 2004/11/27 06:51:32 das Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/db_trace.c,v 1.24 2005/08/03 04:27:38 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kdb.h>
+#include <sys/linker.h>
#include <sys/proc.h>
+#include <sys/stack.h>
#include <sys/sysent.h>
#include <machine/db_machdep.h>
@@ -348,6 +350,45 @@
count));
}
+void
+stack_save(struct stack *st)
+{
+ struct prologue_info pi;
+ linker_symval_t symval;
+ c_linker_sym_t sym;
+ vm_offset_t callpc, frame;
+ long offset;
+ register_t pc, sp;
+
+ stack_zero(st);
+ __asm __volatile(
+ " mov $30,%0 \n"
+ " lda %1,1f \n"
+ "1:\n"
+ : "=r" (sp), "=r" (pc));
+ callpc = (vm_offset_t)pc;
+ frame = (vm_offset_t)sp;
+ while (1) {
+ /*
+ * search_symbol/symbol_values are slow
+ */
+ if (linker_ddb_search_symbol((caddr_t)callpc, &sym, &offset) != 0)
+ break;
+ if (linker_ddb_symbol_values(sym, &symval) != 0)
+ break;
+ if (callpc < (vm_offset_t)symval.value)
+ break;
+ if (stack_put(st, callpc) == -1)
+ break;
+ if (decode_prologue(callpc, (db_addr_t)symval.value, &pi))
+ break;
+ if ((pi.pi_regmask & (1 << 26)) == 0)
+ break;
+ callpc = *(vm_offset_t *)(frame + pi.pi_reg_offset[26]);
+ frame += pi.pi_frame_size;
+ }
+}
+
int
db_md_set_watchpoint(addr, size)
db_expr_t addr;
==== //depot/projects/netsmp/src/sys/amd64/amd64/db_trace.c#2 (text+ko) ====
@@ -25,12 +25,13 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.66 2005/01/21 05:54:05 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.68 2005/08/03 04:33:48 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kdb.h>
#include <sys/proc.h>
+#include <sys/stack.h>
#include <sys/sysent.h>
#include <machine/cpu.h>
@@ -178,7 +179,8 @@
/*
* Stack trace.
*/
-#define INKERNEL(va) (((vm_offset_t)(va)) >= USRSTACK)
+#define INKERNEL(va) (((va) >= DMAP_MIN_ADDRESS && (va) < DMAP_MAX_ADDRESS) \
+ || (va) >= KERNBASE)
struct amd64_frame {
struct amd64_frame *f_frame;
@@ -494,6 +496,28 @@
ctx->pcb_rip, count));
}
+void
+stack_save(struct stack *st)
+{
+ struct amd64_frame *frame;
+ vm_offset_t callpc;
+ register_t rbp;
+
+ stack_zero(st);
+ __asm __volatile("movq %%rbp,%0" : "=r" (rbp));
+ frame = (struct amd64_frame *)rbp;
+ while (1) {
+ if (!INKERNEL((long)frame))
+ break;
+ callpc = frame->f_retaddr;
+ if (!INKERNEL(callpc))
+ break;
+ if (stack_put(st, callpc) == -1)
+ break;
+ frame = frame->f_frame;
+ }
+}
+
int
amd64_set_watch(watchnum, watchaddr, size, access, d)
int watchnum;
==== //depot/projects/netsmp/src/sys/arm/arm/db_trace.c#2 (text+ko) ====
@@ -30,13 +30,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/db_trace.c,v 1.10 2005/01/05 21:58:47 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/db_trace.c,v 1.11 2005/08/03 04:27:38 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/kdb.h>
+#include <sys/stack.h>
#include <machine/armreg.h>
#include <machine/asm.h>
#include <machine/cpufunc.h>
@@ -219,3 +220,21 @@
{
db_trace_thread(curthread, -1);
}
+
+void
+stack_save(struct stack *st)
+{
+ vm_offset_t callpc;
+ u_int32_t *frame;
+
+ stack_zero(st);
+ frame = (u_int32_t *)__builtin_frame_address(0);
+ while (1) {
+ if (!INKERNEL(frame))
+ break;
+ callpc = frame[FR_SCP];
+ if (stack_put(st, callpc) == -1)
+ break;
+ frame = (u_int32_t *)(frame[FR_RFP]);
+ }
+}
==== //depot/projects/netsmp/src/sys/conf/files#4 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1038 2005/07/27 21:47:55 pjd Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1039 2005/08/03 04:27:39 jeff Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -1259,6 +1259,7 @@
kern/subr_scanf.c standard
kern/subr_sleepqueue.c standard
kern/subr_smp.c standard
+kern/subr_stack.c optional ddb
kern/subr_taskqueue.c standard
kern/subr_trap.c standard
kern/subr_turnstile.c standard
==== //depot/projects/netsmp/src/sys/dev/aic7xxx/aicasm/Makefile#2 (text+ko) ====
@@ -1,7 +1,7 @@
#
# $Id: //depot/aic7xxx/freebsd/dev/aic7xxx/aicasm/Makefile#2 $
#
-# $FreeBSD: src/sys/dev/aic7xxx/aicasm/Makefile,v 1.20 2004/12/21 08:47:19 ru Exp $
+# $FreeBSD: src/sys/dev/aic7xxx/aicasm/Makefile,v 1.22 2005/08/03 00:47:33 rwatson Exp $
PROG= aicasm
==== //depot/projects/netsmp/src/sys/dev/ath/if_ath.c#6 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.98 2005/07/24 05:11:39 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.99 2005/08/03 00:18:28 rwatson Exp $");
/*
* Driver for the Atheros Wireless LAN controller.
==== //depot/projects/netsmp/src/sys/dev/awi/awi.c#4 (text+ko) ====
@@ -89,7 +89,7 @@
__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $");
#endif
#ifdef __FreeBSD__
-__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.38 2005/07/22 16:50:18 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.39 2005/08/03 00:18:28 rwatson Exp $");
#endif
#include "opt_inet.h"
==== //depot/projects/netsmp/src/sys/dev/bfe/if_bfe.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.25 2005/06/10 16:49:05 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.26 2005/08/03 00:18:28 rwatson Exp $");
#include <sys/param.h>
#include <sys/systm.h>
==== //depot/projects/netsmp/src/sys/dev/bge/if_bge.c#3 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.91 2005/06/24 21:43:46 dwhite Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.92 2005/08/03 00:18:29 rwatson Exp $");
/*
* Broadcom BCM570x family gigabit ethernet driver for FreeBSD.
==== //depot/projects/netsmp/src/sys/dev/ed/if_ed.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.254 2005/06/15 20:23:40 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.255 2005/08/03 00:18:29 rwatson Exp $");
/*
* Device driver for National Semiconductor DS8390/WD83C690 based ethernet
==== //depot/projects/netsmp/src/sys/dev/em/if_em.c#4 (text+ko) ====
@@ -31,7 +31,7 @@
***************************************************************************/
-/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.66 2005/08/02 08:44:45 ru Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.67 2005/08/03 00:18:29 rwatson Exp $*/
#include <dev/em/if_em.h>
==== //depot/projects/netsmp/src/sys/dev/ex/if_ex.c#3 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ex/if_ex.c,v 1.56 2005/06/10 16:49:08 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ex/if_ex.c,v 1.57 2005/08/03 00:18:29 rwatson Exp $");
/*
* Intel EtherExpress Pro/10, Pro/10+ Ethernet driver
==== //depot/projects/netsmp/src/sys/dev/fe/if_fe.c#3 (text+ko) ====
@@ -21,7 +21,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fe/if_fe.c,v 1.91 2005/06/10 16:49:08 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fe/if_fe.c,v 1.92 2005/08/03 00:18:30 rwatson Exp $");
/*
*
==== //depot/projects/netsmp/src/sys/dev/fxp/if_fxp.c#4 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.241 2005/07/29 22:40:06 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.242 2005/08/03 00:18:30 rwatson Exp $");
/*
* Intel EtherExpress Pro/100B PCI Fast Ethernet driver
==== //depot/projects/netsmp/src/sys/dev/gem/if_gem.c#4 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/gem/if_gem.c,v 1.31 2005/07/24 18:45:15 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/gem/if_gem.c,v 1.32 2005/08/03 00:18:30 rwatson Exp $");
/*
* Driver for Sun GEM ethernet controllers.
==== //depot/projects/netsmp/src/sys/dev/hme/if_hme.c#3 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.37 2005/06/10 16:49:10 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.38 2005/08/03 00:18:30 rwatson Exp $");
/*
* HME Ethernet module driver.
==== //depot/projects/netsmp/src/sys/dev/ie/if_ie.c#3 (text+ko) ====
@@ -51,7 +51,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ie/if_ie.c,v 1.102 2005/06/10 16:49:10 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ie/if_ie.c,v 1.103 2005/08/03 00:18:30 rwatson Exp $");
/*
* Intel 82586 Ethernet chip
==== //depot/projects/netsmp/src/sys/dev/if_ndis/if_ndis.c#3 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.99 2005/06/14 17:47:31 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.100 2005/08/03 00:18:31 rwatson Exp $");
#include "opt_bdg.h"
==== //depot/projects/netsmp/src/sys/dev/ixgb/if_ixgb.c#4 (text+ko) ====
@@ -31,7 +31,7 @@
***************************************************************************/
-/*$FreeBSD: src/sys/dev/ixgb/if_ixgb.c,v 1.11 2005/08/02 09:27:42 brueffer Exp $*/
+/*$FreeBSD: src/sys/dev/ixgb/if_ixgb.c,v 1.12 2005/08/03 00:18:31 rwatson Exp $*/
#include <dev/ixgb/if_ixgb.h>
==== //depot/projects/netsmp/src/sys/dev/lge/if_lge.c#3 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/lge/if_lge.c,v 1.39 2005/06/10 16:49:11 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/lge/if_lge.c,v 1.40 2005/08/03 00:18:31 rwatson Exp $");
/*
* Level 1 LXT1001 gigabit ethernet driver for FreeBSD. Public
==== //depot/projects/netsmp/src/sys/dev/lnc/if_lnc.c#3 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/lnc/if_lnc.c,v 1.111 2005/06/10 16:49:11 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/lnc/if_lnc.c,v 1.112 2005/08/03 00:18:31 rwatson Exp $");
/*
#define DIAGNOSTIC
==== //depot/projects/netsmp/src/sys/dev/my/if_my.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/my/if_my.c,v 1.29 2005/06/10 16:49:12 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/my/if_my.c,v 1.30 2005/08/03 00:18:31 rwatson Exp $");
#include <sys/param.h>
#include <sys/systm.h>
==== //depot/projects/netsmp/src/sys/dev/nge/if_nge.c#3 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.75 2005/06/10 16:49:12 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.76 2005/08/03 00:18:31 rwatson Exp $");
/*
* National Semiconductor DP83820/DP83821 gigabit ethernet driver
==== //depot/projects/netsmp/src/sys/dev/nve/if_nve.c#4 (text+ko) ====
@@ -74,7 +74,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nve/if_nve.c,v 1.8 2005/07/25 22:21:11 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nve/if_nve.c,v 1.9 2005/08/03 00:18:32 rwatson Exp $");
#include <sys/param.h>
#include <sys/systm.h>
==== //depot/projects/netsmp/src/sys/dev/owi/if_owi.c#4 (text+ko) ====
@@ -100,7 +100,7 @@
#if !defined(lint)
static const char rcsid[] =
- "$FreeBSD: src/sys/dev/owi/if_owi.c,v 1.10 2005/08/01 13:51:52 avatar Exp $";
+ "$FreeBSD: src/sys/dev/owi/if_owi.c,v 1.11 2005/08/03 00:18:32 rwatson Exp $";
#endif
static void wi_intr(void *);
==== //depot/projects/netsmp/src/sys/dev/pdq/pdq_ifsubr.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pdq/pdq_ifsubr.c,v 1.26 2005/06/10 16:49:13 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pdq/pdq_ifsubr.c,v 1.27 2005/08/03 00:18:32 rwatson Exp $");
/*
* DEC PDQ FDDI Controller; code for BSD derived operating systems
==== //depot/projects/netsmp/src/sys/dev/ray/if_ray.c#3 (text+ko) ====
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ray/if_ray.c,v 1.79 2005/06/10 16:49:13 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ray/if_ray.c,v 1.80 2005/08/03 00:18:32 rwatson Exp $");
/*
* Card configuration
@@ -2708,6 +2708,7 @@
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
count++;
if (count == 0) {
+ IF_ADDR_UNLOCK(ifp);
ray_com_runq_done(sc);
return;
} else if (count > 16) {
==== //depot/projects/netsmp/src/sys/dev/re/if_re.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.46 2005/07/01 04:12:42 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.47 2005/08/03 00:18:32 rwatson Exp $");
/*
* RealTek 8139C+/8169/8169S/8110S PCI NIC driver
==== //depot/projects/netsmp/src/sys/dev/sn/if_sn.c#3 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/sn/if_sn.c,v 1.46 2005/07/18 23:41:34 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/sn/if_sn.c,v 1.47 2005/08/03 00:18:33 rwatson Exp $");
/*
* This is a driver for SMC's 9000 series of Ethernet adapters.
@@ -1412,8 +1412,10 @@
IF_ADDR_LOCK(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
- if (ifma->ifma_addr->sa_family != AF_LINK)
+ if (ifma->ifma_addr->sa_family != AF_LINK) {
+ IF_ADDR_UNLOCK(ifp);
return 0;
+ }
index = ether_crc32_le(LLADDR((struct sockaddr_dl *)
ifma->ifma_addr), ETHER_ADDR_LEN) & 0x3f;
index2 = 0;
==== //depot/projects/netsmp/src/sys/dev/snc/dp83932.c#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/snc/dp83932.c,v 1.19 2005/06/12 15:25:19 scottl Exp $ */
+/* $FreeBSD: src/sys/dev/snc/dp83932.c,v 1.20 2005/08/03 00:18:33 rwatson Exp $ */
/* $NecBSD: dp83932.c,v 1.5 1999/07/29 05:08:44 kmatsuda Exp $ */
/* $NetBSD: if_snc.c,v 1.18 1998/04/25 21:27:40 scottr Exp $ */
==== //depot/projects/netsmp/src/sys/dev/tx/if_tx.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/tx/if_tx.c,v 1.89 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/tx/if_tx.c,v 1.90 2005/08/03 00:18:33 rwatson Exp $");
/*
* EtherPower II 10/100 Fast Ethernet (SMC 9432 serie)
==== //depot/projects/netsmp/src/sys/dev/txp/if_txp.c#3 (text+ko) ====
@@ -35,14 +35,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.31 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.32 2005/08/03 00:18:33 rwatson Exp $");
/*
* Driver for 3c990 (Typhoon) Ethernet ASIC
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.31 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.32 2005/08/03 00:18:33 rwatson Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -92,7 +92,7 @@
#ifndef lint
static const char rcsid[] =
- "$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.31 2005/06/10 16:49:15 brooks Exp $";
+ "$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.32 2005/08/03 00:18:33 rwatson Exp $";
#endif
/*
==== //depot/projects/netsmp/src/sys/dev/usb/if_aue.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_aue.c,v 1.90 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_aue.c,v 1.91 2005/08/03 00:18:33 rwatson Exp $");
/*
* ADMtek AN986 Pegasus and AN8511 Pegasus II USB to ethernet driver.
==== //depot/projects/netsmp/src/sys/dev/usb/if_axe.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.30 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.31 2005/08/03 00:18:33 rwatson Exp $");
/*
* ASIX Electronics AX88172 USB 2.0 ethernet driver. Used in the
==== //depot/projects/netsmp/src/sys/dev/usb/if_cue.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_cue.c,v 1.57 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_cue.c,v 1.58 2005/08/03 00:18:33 rwatson Exp $");
/*
* CATC USB-EL1210A USB to ethernet driver. Used in the CATC Netmate
==== //depot/projects/netsmp/src/sys/dev/usb/if_kue.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_kue.c,v 1.64 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_kue.c,v 1.65 2005/08/03 00:18:33 rwatson Exp $");
/*
* Kawasaki LSI KL5KUSB101B USB to ethernet adapter driver.
==== //depot/projects/netsmp/src/sys/dev/usb/if_rue.c#4 (text+ko) ====
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_rue.c,v 1.21 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_rue.c,v 1.22 2005/08/03 00:18:33 rwatson Exp $");
/*
* RealTek RTL8150 USB to fast ethernet controller driver.
==== //depot/projects/netsmp/src/sys/dev/usb/if_udav.c#3 (text+ko) ====
@@ -1,6 +1,6 @@
/* $NetBSD: if_udav.c,v 1.2 2003/09/04 15:17:38 tsutsui Exp $ */
/* $nabe: if_udav.c,v 1.3 2003/08/21 16:57:19 nabe Exp $ */
-/* $FreeBSD: src/sys/dev/usb/if_udav.c,v 1.14 2005/06/10 16:49:15 brooks Exp $ */
+/* $FreeBSD: src/sys/dev/usb/if_udav.c,v 1.15 2005/08/03 00:18:33 rwatson Exp $ */
/*-
* Copyright (c) 2003
* Shingo WATANABE <nabe at nabechan.org>. All rights reserved.
@@ -45,7 +45,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.14 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.15 2005/08/03 00:18:33 rwatson Exp $");
#include "opt_inet.h"
#if defined(__NetBSD__)
==== //depot/projects/netsmp/src/sys/dev/vge/if_vge.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/vge/if_vge.c,v 1.14 2005/06/11 01:37:46 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/vge/if_vge.c,v 1.15 2005/08/03 00:18:34 rwatson Exp $");
/*
* VIA Networking Technologies VT612x PCI gigabit ethernet NIC driver.
==== //depot/projects/netsmp/src/sys/dev/wi/if_wi.c#4 (text+ko) ====
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.181 2005/07/22 16:50:17 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.182 2005/08/03 00:18:34 rwatson Exp $");
#define WI_HERMES_AUTOINC_WAR /* Work around data write autoinc bug. */
#define WI_HERMES_STATS_WAR /* Work around stats counter bug. */
==== //depot/projects/netsmp/src/sys/dev/wl/if_wl.c#3 (text+ko) ====
@@ -173,7 +173,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/wl/if_wl.c,v 1.66 2005/06/10 16:49:17 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/wl/if_wl.c,v 1.67 2005/08/03 00:18:34 rwatson Exp $");
/*
==== //depot/projects/netsmp/src/sys/dev/xe/if_xe.c#3 (text+ko) ====
@@ -57,7 +57,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/xe/if_xe.c,v 1.57 2005/07/15 06:08:26 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/xe/if_xe.c,v 1.58 2005/08/03 00:18:34 rwatson Exp $");
/*
* FreeBSD device driver for Xircom CreditCard PCMCIA Ethernet adapters. The
==== //depot/projects/netsmp/src/sys/i386/i386/db_trace.c#2 (text+ko) ====
@@ -25,12 +25,13 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/db_trace.c,v 1.66 2005/01/18 03:48:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/db_trace.c,v 1.67 2005/08/03 04:27:39 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kdb.h>
#include <sys/proc.h>
+#include <sys/stack.h>
#include <sys/sysent.h>
#include <machine/cpu.h>
@@ -500,6 +501,28 @@
ctx->pcb_eip, count));
}
+void
+stack_save(struct stack *st)
+{
+ struct i386_frame *frame;
+ vm_offset_t callpc;
+ register_t ebp;
+
+ stack_zero(st);
+ __asm __volatile("movl %%ebp,%0" : "=r" (ebp));
+ frame = (struct i386_frame *)ebp;
+ while (1) {
+ if (!INKERNEL(frame))
+ break;
+ callpc = frame->f_retaddr;
+ if (!INKERNEL(callpc))
+ break;
+ if (stack_put(st, callpc) == -1)
+ break;
+ frame = frame->f_frame;
+ }
+}
+
int
i386_set_watch(watchnum, watchaddr, size, access, d)
int watchnum;
==== //depot/projects/netsmp/src/sys/ia64/ia64/db_trace.c#2 (text+ko) ====
@@ -24,12 +24,13 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/ia64/ia64/db_trace.c,v 1.23 2005/04/16 05:38:59 marcel Exp $
+ * $FreeBSD: src/sys/ia64/ia64/db_trace.c,v 1.24 2005/08/03 04:27:39 jeff Exp $
*/
#include <sys/param.h>
#include <sys/kdb.h>
#include <sys/proc.h>
+#include <sys/stack.h>
#include <machine/db_machdep.h>
#include <machine/frame.h>
@@ -148,6 +149,18 @@
return (db_backtrace(td, ctx, count));
}
+void
+stack_save(struct stack *st)
+{
+
+ stack_zero(st);
+ /*
+ * Nothing for now.
+ * Is libuwx reentrant?
+ * Can unw_create* sleep?
+ */
+}
+
int
db_md_set_watchpoint(addr, size)
db_expr_t addr;
==== //depot/projects/netsmp/src/sys/kern/kern_lock.c#2 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_lock.c,v 1.89 2005/04/12 05:43:03 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_lock.c,v 1.91 2005/08/03 04:59:07 jeff Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -51,6 +51,10 @@
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/systm.h>
+#ifdef DEBUG_LOCKS
+#include <sys/stack.h>
+#include <sys/sysctl.h>
+#endif
/*
* Locking primitives implementation.
@@ -138,20 +142,11 @@
* accepted shared locks and shared-to-exclusive upgrades to go away.
*/
int
-#ifndef DEBUG_LOCKS
lockmgr(lkp, flags, interlkp, td)
-#else
-debuglockmgr(lkp, flags, interlkp, td, name, file, line)
-#endif
struct lock *lkp;
u_int flags;
struct mtx *interlkp;
struct thread *td;
-#ifdef DEBUG_LOCKS
- const char *name; /* Name of lock function */
- const char *file; /* Name of file call is from */
- int line; /* Line number in file */
-#endif
{
int error;
struct thread *thr;
@@ -165,15 +160,16 @@
if ((flags & LK_INTERNAL) == 0)
mtx_lock(lkp->lk_interlock);
-#ifdef DEBUG_LOCKS
CTR6(KTR_LOCK,
- "lockmgr(): lkp == %p (lk_wmesg == \"%s\"), flags == 0x%x, "
- "td == %p %s:%d", lkp, lkp->lk_wmesg, flags, td, file, line);
-#else
- CTR6(KTR_LOCK,
"lockmgr(): lkp == %p (lk_wmesg == \"%s\"), owner == %p, exclusivecount == %d, flags == 0x%x, "
"td == %p", lkp, lkp->lk_wmesg, lkp->lk_lockholder,
lkp->lk_exclusivecount, flags, td);
+#ifdef DEBUG_LOCKS
+ {
+ struct stack stack; /* XXX */
+ stack_save(&stack);
+ CTRSTACK(KTR_LOCK, &stack, 1);
+ }
#endif
if (flags & LK_INTERLOCK) {
@@ -218,10 +214,7 @@
break;
sharelock(td, lkp, 1);
#if defined(DEBUG_LOCKS)
- lkp->lk_slockholder = thr;
- lkp->lk_sfilename = file;
- lkp->lk_slineno = line;
- lkp->lk_slockername = name;
+ stack_save(&lkp->lk_stack);
#endif
break;
}
@@ -304,9 +297,7 @@
lkp->lk_exclusivecount = 1;
COUNT(td, 1);
#if defined(DEBUG_LOCKS)
- lkp->lk_filename = file;
- lkp->lk_lineno = line;
- lkp->lk_lockername = name;
+ stack_save(&lkp->lk_stack);
#endif
break;
}
@@ -365,9 +356,7 @@
lkp->lk_exclusivecount = 1;
COUNT(td, 1);
#if defined(DEBUG_LOCKS)
- lkp->lk_filename = file;
- lkp->lk_lineno = line;
- lkp->lk_lockername = name;
+ stack_save(&lkp->lk_stack);
#endif
break;
@@ -412,9 +401,7 @@
lkp->lk_exclusivecount = 1;
COUNT(td, 1);
#if defined(DEBUG_LOCKS)
- lkp->lk_filename = file;
- lkp->lk_lineno = line;
- lkp->lk_lockername = name;
+ stack_save(&lkp->lk_stack);
#endif
break;
@@ -508,13 +495,7 @@
lkp->lk_lockholder = LK_NOPROC;
lkp->lk_newlock = NULL;
#ifdef DEBUG_LOCKS
- lkp->lk_filename = "none";
- lkp->lk_lockername = "never exclusive locked";
- lkp->lk_lineno = 0;
- lkp->lk_slockholder = LK_NOPROC;
- lkp->lk_sfilename = "none";
- lkp->lk_slockername = "never share locked";
- lkp->lk_slineno = 0;
+ stack_zero(&lkp->lk_stack);
#endif
}
@@ -584,4 +565,7 @@
lkp->lk_lockholder, lkp->lk_lockholder->td_proc->p_pid);
if (lkp->lk_waitcount > 0)
printf(" with %d pending", lkp->lk_waitcount);
+#ifdef DEBUG_LOCKS
+ stack_print(&lkp->lk_stack);
+#endif
}
==== //depot/projects/netsmp/src/sys/kern/kern_malloc.c#3 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list