Mercurial > illumos > illumos-gate
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 */