summaryrefslogtreecommitdiff
path: root/usr/src/cmd/mdb/common/mdb/mdb_ctf.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/mdb/common/mdb/mdb_ctf.c')
-rw-r--r--usr/src/cmd/mdb/common/mdb/mdb_ctf.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/usr/src/cmd/mdb/common/mdb/mdb_ctf.c b/usr/src/cmd/mdb/common/mdb/mdb_ctf.c
index f2854bb6d6..9cc7c6f1a0 100644
--- a/usr/src/cmd/mdb/common/mdb/mdb_ctf.c
+++ b/usr/src/cmd/mdb/common/mdb/mdb_ctf.c
@@ -2272,3 +2272,35 @@ mdb_ctf_synthetics_to_file(const char *file)
return (err);
}
+
+static int
+cmd_typelist_type(mdb_ctf_id_t id, void *arg)
+{
+ char buf[1024];
+
+ if (mdb_ctf_type_name(id, buf, sizeof (buf)) != NULL) {
+ mdb_printf("%s\n", buf);
+ }
+ return (0);
+}
+
+static int
+cmd_typelist_module(void *data, const mdb_map_t *mp, const char *name)
+{
+ (void) mdb_ctf_type_iter(name, cmd_typelist_type, data);
+ return (0);
+}
+
+int
+cmd_typelist(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
+{
+ if ((flags & DCMD_ADDRSPEC) != 0) {
+ return (DCMD_USAGE);
+ }
+
+ (void) mdb_tgt_object_iter(mdb.m_target, cmd_typelist_module, NULL);
+ (void) mdb_ctf_type_iter(MDB_CTF_SYNTHETIC_ITER, cmd_typelist_type,
+ NULL);
+
+ return (DCMD_OK);
+}