Print this page
11626 introduce /etc/versions/build
11627 clean up UUID code for ::status
*** 20,30 ****
*/
/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
*
! * Copyright 2018 Joyent, Inc.
*/
#include <kmdb/kmdb_kvm.h>
#include <kmdb/kvm.h>
#include <kmdb/kmdb_kdi.h>
--- 20,30 ----
*/
/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
*
! * Copyright 2019 Joyent, Inc.
*/
#include <kmdb/kmdb_kvm.h>
#include <kmdb/kvm.h>
#include <kmdb/kmdb_kdi.h>
*** 47,56 ****
--- 47,57 ----
#include <dlfcn.h>
#include <sys/isa_defs.h>
#include <sys/kobj.h>
#include <sys/kobj_impl.h>
#include <sys/bitmap.h>
+ #include <sys/uuid.h>
#include <vm/as.h>
static const char KMT_RTLD_NAME[] = "krtld";
static const char KMT_MODULE[] = "mdb_ks";
static const char KMT_CTFPARENT[] = "genunix";
*** 550,560 ****
/*ARGSUSED*/
static int
kmt_status_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
{
struct utsname uts;
! char uuid[37];
kreg_t tt;
if (mdb_tgt_readsym(mdb.m_target, MDB_TGT_AS_VIRT, &uts, sizeof (uts),
"unix", "utsname") != sizeof (uts)) {
warn("failed to read 'utsname' struct from kernel\n");
--- 551,561 ----
/*ARGSUSED*/
static int
kmt_status_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
{
struct utsname uts;
! char uuid[UUID_PRINTABLE_STRING_LENGTH];
kreg_t tt;
if (mdb_tgt_readsym(mdb.m_target, MDB_TGT_AS_VIRT, &uts, sizeof (uts),
"unix", "utsname") != sizeof (uts)) {
warn("failed to read 'utsname' struct from kernel\n");
*** 566,585 ****
(int)(sizeof (void *) * NBBY),
(*uts.nodename == '\0' ? "(not set)" : uts.nodename));
mdb_printf("operating system: %s %s (%s)\n",
uts.release, uts.version, uts.machine);
! if (mdb_tgt_readsym(mdb.m_target, MDB_TGT_AS_VIRT, uuid, sizeof (uuid),
! "genunix", "dump_osimage_uuid") != sizeof (uuid)) {
! warn("failed to read 'dump_osimage_uuid' string from kernel\n");
! (void) strcpy(uuid, "(error)");
! } else if (*uuid == '\0') {
! (void) strcpy(uuid, "(not set)");
! } else if (uuid[36] != '\0') {
! (void) strcpy(uuid, "(invalid)");
}
- mdb_printf("image uuid: %s\n", uuid);
mdb_printf("DTrace state: %s\n", (kmdb_kdi_dtrace_get_state() ==
KDI_DTSTATE_DTRACE_ACTIVE ? "active (debugger breakpoints cannot "
"be armed)" : "inactive"));
--- 567,584 ----
(int)(sizeof (void *) * NBBY),
(*uts.nodename == '\0' ? "(not set)" : uts.nodename));
mdb_printf("operating system: %s %s (%s)\n",
uts.release, uts.version, uts.machine);
! mdb_print_buildversion();
!
! if (mdb_readsym(uuid, sizeof (uuid),
! "dump_osimage_uuid") == sizeof (uuid) &&
! uuid[sizeof (uuid) - 1] == '\0') {
! mdb_printf("image uuid: %s\n", uuid[0] != '\0' ?
! uuid : "(not set)");
}
mdb_printf("DTrace state: %s\n", (kmdb_kdi_dtrace_get_state() ==
KDI_DTSTATE_DTRACE_ACTIVE ? "active (debugger breakpoints cannot "
"be armed)" : "inactive"));