Date: Tue, 23 Sep 2003 23:12:19 -0300 From: "Giovanni P. Tirloni" <gpt@tirloni.org> To: freebsd-hackers@freebsd.org Subject: mbuf doubts Message-ID: <20030924021219.GV34641@pixies.tirloni.org>
next in thread | raw e-mail | index | archive | help
Hi, I have been reading the D&I chapter about IPC, specially the mbuf section and *many* doubts were raised by my mind. I sending them here in the hope that someone can clarify some bits for me so I can proceed. Reading sys/param.h and sys/mbuf.h I came to the conclusion that there are four types of mbufs regarding it's allocation of memory for data. Is the listing below correct? struct mbuf *m; 1. Normal mbuf using m->M_databuf 2. Normal mbuf with external storage (cluster?) in m->m_hdr->mh_data 3. Header mbuf using m->m_pktdat; 4. Header mbuf with ext. storage (cluster?) in m->m_ext->ext_buf Other questions: 1. When using ext. storage is the space allocated by M_databuf wasted? 2. How the system decides 256 bytes for each mbuf isn't enough and it needs a mbuf cluster? Isn't chaining useful there? 3. How does changing MSIZE affects the whole thing? 4. What about MCLBYTES? Sorry to make so many questions at once but I find it very interesting and I'm really willing to learn how the building blocks of the network stack work. Perhaps my questions are out of reality.. it's risk. Thanks, -- Giovanni P. Tirloni <gpt at tirloni.org> Fingerprint: 8C3F BEC5 79BD 3E9B EDB8 72F4 16E8 BA5E D031 5C26
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030924021219.GV34641>