On Monday 24 September 2001 09:41 pm, Cliff Woolley wrote:
> On Mon, 24 Sep 2001, Brian Pane wrote:
> > Is it always going to be true that all the bucket subclasses are declared
> > in apr_buckets.h?  If so, how about doing something like this:
> >
> >   union bucket_size {
> >     struct apr_bucket t1;
> >     struct apr_bucket_heap t2;
> >     struct apr_bucket_pool t3;
> >     /* rest of the bucket types omitted for clarity... */
> >   };
> >
> > and using sizeof(union bucket_size) as the single block size for the
> > free list?
>
> That's a very good start... the only problem is that we have no way to
> know how much space custom bucket types will need.  As long as the space
> requirement is "reasonable," I think we should provide for it.  If the
> definition of reasonable that we choose is <=sizeof(union bucket_size),
> then that's okay with me.  Or maybe it should be the size of the union or,
> say, 64B, whichever is bigger?  Should we even bother?
>
> I'm also having trouble coming up with a prototype for apr_bucket_free:
> unless you do something magical, you have to pass it the list number:
>
> void apr_bucket_free(void *ptr, int list);
>
> But that means it'll be tricky to support the b->free(b) thing that
> FirstBill requested.  It was nice and clean with SMS (grumble), since the
> function to use and the particular instance to be freed (and knowledge of
> its parent) were tied together as b->sms... any ideas?  I suppose we could
> wrap free() with some other function in order to discard the extra
> parameter for those bucket types that might still want to use malloc/free
> directly... ugh.

Why not just put the list number in the bucket itself?

______________________________________________________________
Ryan Bloom                              [EMAIL PROTECTED]
Covalent Technologies                   [EMAIL PROTECTED]
--------------------------------------------------------------

Reply via email to