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] --------------------------------------------------------------