* 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

Reply via email to