summaryrefslogtreecommitdiff
path: root/sys/ddb
diff options
context:
space:
mode:
authorAlexander Bluhm <bluhm@cvs.openbsd.org>2024-09-05 08:52:28 +0000
committerAlexander Bluhm <bluhm@cvs.openbsd.org>2024-09-05 08:52:28 +0000
commit57ec39a5b3e6fd23ee8c34937cfe3e6ba83be6ef (patch)
tree84619191065eefff74cfa54adf3da874eee6f481 /sys/ddb
parent85fe2d4c0959a3fbdd949325a12f79484bb97a19 (diff)
In ddb(4) print mbuf chain and packet list.
For debugging hardware offloading, DMA requirements, bounce buffers, and performance optimizations, knowing the memory layout of mbuf content helps. Implement /c and /p modifiers in ddb show mbuf. It traverses the pointer m_next for mbuf chain or m_nextpkt for packet list. Show mbuf type, data offset, mbuf length, packet length, cluster size, and total number of elements, length and size. OK claudio@ mvs@
Diffstat (limited to 'sys/ddb')
-rw-r--r--sys/ddb/db_command.c12
-rw-r--r--sys/ddb/db_interface.h4
2 files changed, 13 insertions, 3 deletions
diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c
index 562053d112a..1e129c2e03c 100644
--- a/sys/ddb/db_command.c
+++ b/sys/ddb/db_command.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_command.c,v 1.101 2024/05/13 01:15:50 jsg Exp $ */
+/* $OpenBSD: db_command.c,v 1.102 2024/09/05 08:52:27 bluhm Exp $ */
/* $NetBSD: db_command.c,v 1.20 1996/03/30 22:30:05 christos Exp $ */
/*
@@ -340,7 +340,15 @@ db_malloc_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
void
db_mbuf_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- m_print((void *)addr, db_printf);
+ if ((modif[0] == 'c' && modif[1] == 'p') ||
+ (modif[0] == 'p' && modif[1] == 'c'))
+ m_print_packet((void *)addr, 1, db_printf);
+ else if (modif[0] == 'c')
+ m_print_chain((void *)addr, 0, db_printf);
+ else if (modif[0] == 'p')
+ m_print_packet((void *)addr, 0, db_printf);
+ else
+ m_print((void *)addr, db_printf);
}
void
diff --git a/sys/ddb/db_interface.h b/sys/ddb/db_interface.h
index cccec9ed69c..bdde7ae345f 100644
--- a/sys/ddb/db_interface.h
+++ b/sys/ddb/db_interface.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_interface.h,v 1.27 2024/02/03 18:51:58 beck Exp $ */
+/* $OpenBSD: db_interface.h,v 1.28 2024/09/05 08:52:27 bluhm Exp $ */
/* $NetBSD: db_interface.h,v 1.1 1996/02/05 01:57:03 christos Exp $ */
/*
@@ -61,6 +61,8 @@ void db_show_all_pools(db_expr_t, int, db_expr_t, char *);
/* kern/uipc_mbuf.c */
void m_print(void *, int (*)(const char *, ...));
+void m_print_chain(void *, int, int (*)(const char *, ...));
+void m_print_packet(void *, int, int (*)(const char *, ...));
/* kern/uipc_socket.c */
void so_print(void *, int (*)(const char *, ...));