Download raw body.
ddb mbuf chains
On Thu, Sep 05, 2024 at 10:29:21AM +0300, Vitaliy Makkoveev wrote:
> > > > Additionally we can print mbuf type and offset. Then a UDP receive
> > > > socket buffer looks like this:
> > > >
> > > > ++- mbuf 0xfffffd806dcddd00, nam, off 0, len 16
> > > > |+- mbuf 0xfffffd806dcddf00, dat, off 52, len 1472, pktlen 2049, clsize 2048
> > > > |+- mbuf 0xfffffd806dcdd400, dat, off 44, len 577, clsize 2048
> > > > |\- total chain 3, len 2065, size 4320
> > > > ++- mbuf 0xfffffd806dcdde00, nam, off 0, len 16
> > > > |+- mbuf 0xfffffd806dcdd800, dat, off 52, len 4, pktlen 4, clsize 2048
> > > > |\- total chain 2, len 20, size 2272
> > > > \-- total packets 2
I would like to print mbuf size also for non cluster.
ddb> show mbuf /c 0xfffffd807c113000
-+- mbuf 0xfffffd807c113000, nam, off 0, len 28, size 224
\- total chain 1, len 28, size 224
Prototype for m_print_chain() is in ddb/db_interface.h. By including
it, compiler checks that it matches the implementation.
ok?
bluhm
Index: kern/uipc_mbuf.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/kern/uipc_mbuf.c,v
diff -u -p -r1.292 uipc_mbuf.c
--- kern/uipc_mbuf.c 5 Sep 2024 08:52:27 -0000 1.292
+++ kern/uipc_mbuf.c 6 Sep 2024 14:56:35 -0000
@@ -90,6 +90,7 @@
#ifdef DDB
#include <machine/db_machdep.h>
+#include <ddb/db_interface.h>
#endif
#if NPF > 0
@@ -1567,6 +1568,9 @@ m_print_chain(void *v, int deep,
(*pr)(", pktlen %d", m->m_pkthdr.len);
if (m->m_flags & M_EXT)
(*pr)(", clsize %u", m->m_ext.ext_size);
+ else
+ (*pr)(", size %u",
+ m->m_flags & M_PKTHDR ? MHLEN : MLEN);
(*pr)("\n");
indent = deep ? "|+-" : " +-";
}
ddb mbuf chains