diff usr/src/cmd/mdb/common/mdb/mdb_modapi.c @ 12914:3bb859a7330c

6679140 asymmetric alloc/dealloc activity can induce dynamic variable drops 6679193 dtrace_dynvar walker produces flood of dtrace_dynhash_sink 6935550 would like ::stacks for user-land 6970441 allocation failure can induce crashes in libdtrace 6971885 dtrace_program_strcompile() fails spuriously on UTF-8 input
author Bryan Cantrill <Bryan.Cantrill@Sun.COM>
date Fri, 23 Jul 2010 17:34:02 -0700
parents 8e0fa896ea0b
children 6b4f289e7094
line wrap: on
line diff
--- a/usr/src/cmd/mdb/common/mdb/mdb_modapi.c	Fri Jul 23 16:35:08 2010 -0700
+++ b/usr/src/cmd/mdb/common/mdb/mdb_modapi.c	Fri Jul 23 17:34:02 2010 -0700
@@ -18,13 +18,11 @@
  *
  * CDDL HEADER END
  */
+
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #include <mdb/mdb_modapi.h>
 #include <mdb/mdb_module.h>
 #include <mdb/mdb_string.h>
@@ -189,6 +187,12 @@
 	    buf, nbytes, sym, NULL));
 }
 
+int
+mdb_getareg(mdb_tid_t tid, const char *rname, mdb_reg_t *rp)
+{
+	return (mdb_tgt_getareg(mdb.m_target, tid, rname, rp));
+}
+
 u_longlong_t
 mdb_strtoull(const char *s)
 {
@@ -744,6 +748,51 @@
 }
 
 /*
+ * Private callback structure for implementing mdb_object_iter, below.
+ */
+typedef struct {
+	mdb_object_cb_t oi_cb;
+	void *oi_arg;
+	int oi_rval;
+} object_iter_arg_t;
+
+/*ARGSUSED*/
+static int
+mdb_object_cb(void *data, const mdb_map_t *map, const char *fullname)
+{
+	object_iter_arg_t *arg = data;
+	mdb_object_t obj;
+
+	if (arg->oi_rval != 0)
+		return (0);
+
+	bzero(&obj, sizeof (obj));
+	obj.obj_base = map->map_base;
+	obj.obj_name = strbasename(map->map_name);
+	obj.obj_size = map->map_size;
+	obj.obj_fullname = fullname;
+
+	arg->oi_rval = arg->oi_cb(&obj, arg->oi_arg);
+
+	return (0);
+}
+
+int
+mdb_object_iter(mdb_object_cb_t cb, void *data)
+{
+	object_iter_arg_t arg;
+
+	arg.oi_cb = cb;
+	arg.oi_arg = data;
+	arg.oi_rval = 0;
+
+	if (mdb_tgt_object_iter(mdb.m_target, mdb_object_cb, &arg) != 0)
+		return (-1);
+
+	return (arg.oi_rval);
+}
+
+/*
  * Private structure and function for implementing mdb_dumpptr on top
  * of mdb_dump_internal
  */