summaryrefslogtreecommitdiff
path: root/usr/src/cmd/mdb
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/mdb')
-rw-r--r--usr/src/cmd/mdb/common/modules/crypto/crypto_cmds.h12
-rw-r--r--usr/src/cmd/mdb/common/modules/crypto/impl.c124
-rw-r--r--usr/src/cmd/mdb/common/modules/crypto/spi.c11
3 files changed, 49 insertions, 98 deletions
diff --git a/usr/src/cmd/mdb/common/modules/crypto/crypto_cmds.h b/usr/src/cmd/mdb/common/modules/crypto/crypto_cmds.h
index c03d61abf4..0d8d294ff5 100644
--- a/usr/src/cmd/mdb/common/modules/crypto/crypto_cmds.h
+++ b/usr/src/cmd/mdb/common/modules/crypto/crypto_cmds.h
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,15 +19,13 @@
* CDDL HEADER END
*/
/*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _CRYPTO_CMDS_H
#define _CRYPTO_CMDS_H
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -47,9 +44,6 @@ extern int crypto_dual_data(uintptr_t addr, uint_t flags, int argc, \
extern int crypto_key(uintptr_t addr, uint_t flags, int argc, \
const mdb_arg_t *argv);
-extern int kcf_sched_info(uintptr_t addr, uint_t flags, int argc, \
- const mdb_arg_t *argv);
-
extern int kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, \
const mdb_arg_t *argv);
diff --git a/usr/src/cmd/mdb/common/modules/crypto/impl.c b/usr/src/cmd/mdb/common/modules/crypto/impl.c
index 649d7fb91d..52d20d2509 100644
--- a/usr/src/cmd/mdb/common/modules/crypto/impl.c
+++ b/usr/src/cmd/mdb/common/modules/crypto/impl.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -36,32 +36,6 @@
#include <sys/crypto/impl.h>
#include "crypto_cmds.h"
-int
-kcf_sched_info(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
-{
- kcf_sched_info_t sched;
- kcf_sched_info_t *sinfo = &sched;
-
- if (!(flags & DCMD_ADDRSPEC)) {
- if ((argc == 1) && (argv->a_type == MDB_TYPE_IMMEDIATE))
- sinfo = (kcf_sched_info_t *)(uintptr_t)argv->a_un.a_val;
- else
- return (DCMD_USAGE);
- } else if (addr == NULL) /* not allowed with DCMD_ADDRSPEC */
- return (DCMD_USAGE);
- else {
- if (mdb_vread(sinfo, sizeof (kcf_sched_info_t), addr) == -1) {
- mdb_warn("cannot read %p", addr);
- return (DCMD_ERR);
- }
- }
- mdb_printf("ks_ndispatches:\t%llu\n", sinfo->ks_ndispatches);
- mdb_printf("ks_nfails:\t%llu\n", sinfo->ks_nfails);
- mdb_printf("ks_nbusy_rval:\t%llu\n", sinfo->ks_nbusy_rval);
- mdb_printf("ks_ntaskq:\t%p\n", sinfo->ks_taskq);
- return (DCMD_OK);
-}
-
static const char *prov_states[] = {
"none",
"KCF_PROV_ALLOCATED",
@@ -71,34 +45,10 @@ static const char *prov_states[] = {
"KCF_PROV_BUSY",
"KCF_PROV_FAILED",
"KCF_PROV_DISABLED",
- "KCF_PROV_REMOVED",
- "KCF_PROV_FREED"
+ "KCF_PROV_UNREGISTERING",
+ "KCF_PROV_UNREGISTERED"
};
-static void
-pr_kstat_named(kstat_named_t *ks)
-{
- mdb_inc_indent(4);
-
- mdb_printf("name = %s\n", ks->name);
- mdb_printf("value = ");
-
- /*
- * The only data type used for the provider kstats is uint64.
- */
- switch (ks->data_type) {
- case KSTAT_DATA_UINT64:
-#if defined(_LP64) || defined(_LONGLONG_TYPE)
- mdb_printf("%llu\n", ks->value.ui64);
-#endif
- break;
- default:
- mdb_warn("Incorrect data type for kstat.\n");
- }
-
- mdb_dec_indent(4);
-}
-
/*ARGSUSED*/
int
kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
@@ -108,7 +58,9 @@ kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
char string[MAXNAMELEN + 1];
int i, j;
crypto_mech_info_t *mech_pointer;
- mdb_arg_t arg;
+ kcf_prov_cpu_t stats;
+ uint64_t dtotal, ftotal, btotal;
+ int holdcnt, jobcnt;
if ((flags & DCMD_ADDRSPEC) != DCMD_ADDRSPEC)
return (DCMD_USAGE);
@@ -139,8 +91,6 @@ kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
mdb_printf("bad pd_prov_type:\t%d\n", desc.pd_prov_type);
}
- mdb_printf("pd_prov_handle:\t\t%p\n", desc.pd_prov_handle);
- mdb_printf("pd_kcf_prov_handle:\t%u\n", desc.pd_kcf_prov_handle);
mdb_printf("pd_prov_id:\t\t%u\n", desc.pd_prov_id);
if (desc.pd_description == NULL)
mdb_printf("pd_description:\t\tNULL\n");
@@ -150,6 +100,38 @@ kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
} else
mdb_printf("pd_description:\t\t%s\n", string);
+ mdb_printf("pd_sid:\t\t\t%u\n", desc.pd_sid);
+ mdb_printf("pd_taskq:\t\t%p\n", desc.pd_taskq);
+ mdb_printf("pd_nbins:\t\t%u\n", desc.pd_nbins);
+ mdb_printf("pd_percpu_bins:\t\t%p\n", desc.pd_percpu_bins);
+
+ dtotal = ftotal = btotal = 0;
+ holdcnt = jobcnt = 0;
+ for (i = 0; i < desc.pd_nbins; i++) {
+ if (mdb_vread(&stats, sizeof (kcf_prov_cpu_t),
+ (uintptr_t)(desc.pd_percpu_bins + i)) == -1) {
+ mdb_warn("cannot read addr %p",
+ desc.pd_percpu_bins + i);
+ return (DCMD_ERR);
+ }
+
+ holdcnt += stats.kp_holdcnt;
+ jobcnt += stats.kp_jobcnt;
+ dtotal += stats.kp_ndispatches;
+ ftotal += stats.kp_nfails;
+ btotal += stats.kp_nbusy_rval;
+ }
+ mdb_inc_indent(4);
+ mdb_printf("total kp_holdcnt:\t\t%d\n", holdcnt);
+ mdb_printf("total kp_jobcnt:\t\t%u\n", jobcnt);
+ mdb_printf("total kp_ndispatches:\t%llu\n", dtotal);
+ mdb_printf("total kp_nfails:\t\t%llu\n", ftotal);
+ mdb_printf("total kp_nbusy_rval:\t%llu\n", btotal);
+ mdb_dec_indent(4);
+
+ mdb_printf("pd_prov_handle:\t\t%p\n", desc.pd_prov_handle);
+ mdb_printf("pd_kcf_prov_handle:\t%u\n", desc.pd_kcf_prov_handle);
+
mdb_printf("pd_ops_vector:\t\t%p\n", desc.pd_ops_vector);
mdb_printf("pd_mech_list_count:\t%u\n", desc.pd_mech_list_count);
/* mechanisms */
@@ -172,28 +154,7 @@ kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
mdb_printf("\n");
}
mdb_dec_indent(8);
- mdb_printf("pd_ks_data.ps_ops_total:\n", desc.pd_ks_data.ps_ops_total);
- pr_kstat_named(&desc.pd_ks_data.ps_ops_total);
- mdb_printf("pd_ks_data.ps_ops_passed:\n",
- desc.pd_ks_data.ps_ops_passed);
- pr_kstat_named(&desc.pd_ks_data.ps_ops_passed);
- mdb_printf("pd_ks_data.ps_ops_failed:\n",
- desc.pd_ks_data.ps_ops_failed);
- pr_kstat_named(&desc.pd_ks_data.ps_ops_failed);
- mdb_printf("pd_ks_data.ps_ops_busy_rval:\n",
- desc.pd_ks_data.ps_ops_busy_rval);
- pr_kstat_named(&desc.pd_ks_data.ps_ops_busy_rval);
-
- mdb_printf("pd_kstat:\t\t%p\n", desc.pd_kstat);
- mdb_printf("kcf_sched_info:\n");
- /* print pd_sched_info via existing function */
- mdb_inc_indent(8);
- arg.a_type = MDB_TYPE_IMMEDIATE;
- arg.a_un.a_val = (uintmax_t)(uintptr_t)&desc.pd_sched_info;
- mdb_call_dcmd("kcf_sched_info", (uintptr_t)NULL, 0, 1, &arg);
- mdb_dec_indent(8);
- mdb_printf("pd_refcnt:\t\t%u\n", desc.pd_refcnt);
if (desc.pd_name == NULL)
mdb_printf("pd_name:\t\t NULL\n");
else if (mdb_readstr(string, MAXNAMELEN + 1, (uintptr_t)desc.pd_name)
@@ -205,16 +166,15 @@ kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
mdb_printf("pd_instance:\t\t%u\n", desc.pd_instance);
mdb_printf("pd_module_id:\t\t%d\n", desc.pd_module_id);
mdb_printf("pd_mctlp:\t\t%p\n", desc.pd_mctlp);
- mdb_printf("pd_sid:\t\t\t%u\n", desc.pd_sid);
mdb_printf("pd_lock:\t\t%p\n", desc.pd_lock);
if (desc.pd_state < KCF_PROV_ALLOCATED ||
- desc.pd_state > KCF_PROV_FREED)
+ desc.pd_state > KCF_PROV_UNREGISTERED)
mdb_printf("pd_state is invalid:\t%d\n", desc.pd_state);
else
mdb_printf("pd_state:\t%s\n", prov_states[desc.pd_state]);
+ mdb_printf("pd_provider_list:\t%p\n", desc.pd_provider_list);
mdb_printf("pd_resume_cv:\t\t%hd\n", desc.pd_resume_cv._opaque);
- mdb_printf("pd_remove_cv:\t\t%hd\n", desc.pd_remove_cv._opaque);
mdb_printf("pd_flags:\t\t%s %s %s %s %s\n",
(desc.pd_flags & CRYPTO_HIDE_PROVIDER) ?
"CRYPTO_HIDE_PROVIDER" : " ",
@@ -228,7 +188,9 @@ kcf_provider_desc(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
"KCF_PROV_RESTRICTED" : " ");
if (desc.pd_flags & CRYPTO_HASH_NO_UPDATE)
mdb_printf("pd_hash_limit:\t\t%u\n", desc.pd_hash_limit);
- mdb_printf("pd_provider_list:\t%p\n", desc.pd_provider_list);
+
+ mdb_printf("pd_kstat:\t\t%p\n", desc.pd_kstat);
+
return (DCMD_OK);
}
diff --git a/usr/src/cmd/mdb/common/modules/crypto/spi.c b/usr/src/cmd/mdb/common/modules/crypto/spi.c
index 7ab7df1130..13d35e64e3 100644
--- a/usr/src/cmd/mdb/common/modules/crypto/spi.c
+++ b/usr/src/cmd/mdb/common/modules/crypto/spi.c
@@ -19,12 +19,10 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
/*
* mdb dcmds for selected structures from
* usr/src/uts/common/sys/crypto/spi.h
@@ -96,7 +94,7 @@ crypto_provider_ext_info(uintptr_t addr, uint_t flags, int argc,
return (DCMD_USAGE);
if (mdb_vread(&ext_prov, sizeof (crypto_provider_ext_info_t), addr)
- == -1) {
+ == -1) {
mdb_warn("cannot read addr");
return (DCMD_ERR);
}
@@ -197,7 +195,7 @@ crypto_mech_info(uintptr_t addr, uint_t flags, int argc,
return (DCMD_USAGE);
if (mdb_vread(&minfo, sizeof (crypto_mech_info_t), addr)
- == -1) {
+ == -1) {
mdb_warn("cannot read addr %p", addr);
return (DCMD_ERR);
}
@@ -246,9 +244,6 @@ static const mdb_dcmd_t dcmds[] = {
/* impl.c */
- { "kcf_sched_info", ":",
- "scheduling data for a crypto request", kcf_sched_info, NULL },
-
{ "kcf_provider_desc", ":",
"crypto provider description struct", kcf_provider_desc, NULL },