Module Name: src Committed By: ozaki-r Date: Fri Mar 16 04:37:55 UTC 2018
Modified Files: src/share/man/man4: ddb.4 src/sys/ddb: db_command.c src/sys/sys: lockdebug.h Log Message: Add a new command, show lockstat, which shows statistics of locks Currently the command shows the number of allocated locks. The command is useful only if LOCKDEBUG is enabled. To generate a diff of this commit: cvs rdiff -u -r1.174 -r1.175 src/share/man/man4/ddb.4 cvs rdiff -u -r1.149 -r1.150 src/sys/ddb/db_command.c cvs rdiff -u -r1.16 -r1.17 src/sys/sys/lockdebug.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man4/ddb.4 diff -u src/share/man/man4/ddb.4:1.174 src/share/man/man4/ddb.4:1.175 --- src/share/man/man4/ddb.4:1.174 Mon Feb 19 10:31:53 2018 +++ src/share/man/man4/ddb.4 Fri Mar 16 04:37:55 2018 @@ -1,4 +1,4 @@ -.\" $NetBSD: ddb.4,v 1.174 2018/02/19 10:31:53 wiz Exp $ +.\" $NetBSD: ddb.4,v 1.175 2018/03/16 04:37:55 ozaki-r Exp $ .\" .\" Copyright (c) 1997 - 2009 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -56,7 +56,7 @@ .\" any improvements or extensions that they make and grant Carnegie Mellon .\" the rights to redistribute these changes. .\" -.Dd February 17, 2018 +.Dd March 16, 2018 .Dt DDB 4 .Os .Sh NAME @@ -650,6 +650,10 @@ Display information about a lock at .Ar address . This command is useful only if a kernel is compiled with .Cd options LOCKDEBUG . +.It Ic show lockstat +Display information about statistics of locks. +This command is useful only if a kernel is compiled with +.Cd options LOCKDEBUG . .It Ic show map Ns Oo Cm /f Oc Ar address Print the vm_map at .Ar address . Index: src/sys/ddb/db_command.c diff -u src/sys/ddb/db_command.c:1.149 src/sys/ddb/db_command.c:1.150 --- src/sys/ddb/db_command.c:1.149 Sun Mar 4 07:14:50 2018 +++ src/sys/ddb/db_command.c Fri Mar 16 04:37:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: db_command.c,v 1.149 2018/03/04 07:14:50 mlelstv Exp $ */ +/* $NetBSD: db_command.c,v 1.150 2018/03/16 04:37:55 ozaki-r Exp $ */ /* * Copyright (c) 1996, 1997, 1998, 1999, 2002, 2009 The NetBSD Foundation, Inc. @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.149 2018/03/04 07:14:50 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.150 2018/03/16 04:37:55 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_aio.h" @@ -190,6 +190,7 @@ static void db_event_print_cmd(db_expr_t static void db_fncall(db_expr_t, bool, db_expr_t, const char *); static void db_help_print_cmd(db_expr_t, bool, db_expr_t, const char *); static void db_lock_print_cmd(db_expr_t, bool, db_expr_t, const char *); +static void db_show_lockstat(db_expr_t, bool, db_expr_t, const char *); static void db_mount_print_cmd(db_expr_t, bool, db_expr_t, const char *); static void db_mbuf_print_cmd(db_expr_t, bool, db_expr_t, const char *); static void db_map_print_cmd(db_expr_t, bool, db_expr_t, const char *); @@ -248,6 +249,9 @@ static const struct db_command db_show_c "Print the files open by process at address", "[/f] address", NULL) }, { DDB_ADD_CMD("lock", db_lock_print_cmd, 0,NULL,NULL,NULL) }, + { DDB_ADD_CMD("lockstat", + db_show_lockstat, 0, + "Print statistics of locks", NULL, NULL) }, { DDB_ADD_CMD("map", db_map_print_cmd, 0, "Print the vm_map at address.", "[/f] address",NULL) }, { DDB_ADD_CMD("module", db_show_module_cmd, 0, @@ -1226,6 +1230,16 @@ db_lock_print_cmd(db_expr_t addr, bool h #endif } +static void +db_show_lockstat(db_expr_t addr, bool have_addr, + db_expr_t count, const char *modif) +{ + +#ifdef _KERNEL /* XXX CRASH(8) */ + lockdebug_show_lockstat(db_printf); +#endif +} + /* * Call random function: * !expr(arg,arg,arg) Index: src/sys/sys/lockdebug.h diff -u src/sys/sys/lockdebug.h:1.16 src/sys/sys/lockdebug.h:1.17 --- src/sys/sys/lockdebug.h:1.16 Sat Sep 16 23:54:41 2017 +++ src/sys/sys/lockdebug.h Fri Mar 16 04:37:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: lockdebug.h,v 1.16 2017/09/16 23:54:41 christos Exp $ */ +/* $NetBSD: lockdebug.h,v 1.17 2018/03/16 04:37:55 ozaki-r Exp $ */ /*- * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -58,6 +58,7 @@ void lockdebug_abort(const char *, size_ void lockdebug_lock_print(void *, void (*)(const char *, ...) __printflike(1, 2)); +void lockdebug_show_lockstat(void (*)(const char *, ...) __printflike(1, 2)); #ifdef LOCKDEBUG