Sander Striker wrote:
Hi,
Below a patch to apr and a patch to httpd to factor out the allocator from pools. It is only the first cut, so crucial details like documentation are missing.
I'd like some feedback on the general idea though.
Hopefully this helps when implementing the bucket allocator.
The only additional thing that I think this API needs is a way to say "give me a block in which the total size--including all of the allocator's internal block header structures--is X."
The idea here is to allow things like the bucket freelist code to alloc: 8KB - sizeof(allocator headers) so that the entire structure fits in two memory pages.
The API could look something like this:
APR_DECLARE(apr_memnode_t *) apr_allocator_alloc2(apr_allocator_t *allocator,
apr_size_t target_size,
apr_size_t *actual_size);
where "target_size" is an upper bound on the number of bytes you want and "actual_size" is how many bytes you actually get to work with (equal to target_size minus the space devoted to the allocator's internal block header structs).
--Brian
