* Bosko Milekic <[EMAIL PROTECTED]> [001211 11:56] wrote:
>
> Something I forgot in first Email...
>
> On Mon, 11 Dec 2000, Bosko Milekic wrote:
>
> [...]
> > Actually, your free routine needs to accept the address of the
> > cluster as a first argument, and the optional argument as a second
> > argument. According to your MEXTADD() above, your optional argument will
> > be something called "cm." In your case, what you need to make your
> > optional argument be is the actual mbuf "control" (you can cast it to
> > struct mbuf *). Then, you can call unp_scan() on that mbuf (second
> > argument) and call _MCLFREE() on the first argument, which will
> > effectively be the address of the cluster.
>
> Don't forget to also, after running _MCLFREE() on the ext_buf, to
> NULL out the control mbuf's ext_buf, and to remove the M_EXT bit from the
> mbuf if you are planning to re-use it. Basically, make sure to clean up
> after yourself after you forcibly free the cluster "manually."
Hmm, I think instead of doing this sort of abuse, what I should be
doing is allocating an mbuf header, then allocating a mbuf cluster
then attaching them using the MEXTADD() macro.
I'm going to look at the code to see if there's a clean way to do this,
if not can you provide an interface for allocating and free'ing
clusters by themselves?
thanks,
--
-Alfred Perlstein - [[EMAIL PROTECTED]|[EMAIL PROTECTED]]
"I have the heart of a child; I keep it in a jar on my desk."
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message