On May 13, 2009, at 11:45 AM, jean-frederic clere wrote:
Jim Jagielski wrote:
On May 13, 2009, at 10:17 AM, jean-frederic clere wrote:
Jim Jagielski wrote:
OK, I think having 2 more API functions rounds out the impl;
Consider: the current assumption is that the user manages the
indexes into the slotmem. But what if the user doesn't?
Then he can't use the stuff :-(
Certainly
it would make sense for the slotmem to know what slots are now
currently available and return a "free" slot to the caller.
So I think a "grab" and a "return" function are required as well.
I have malloc() / free() / getused() / getfree() switchable logic
that I can add quickly. Basically it create a table of used and
free slotmem additionally to data it.
*grin*
Yesterday I added in a 'inuse' table, basically to optimize the
ap_slotmem_do()
function, and already have a 'grab'/'return' impl here ready to svn
ci.
(I'm guessing my grab == malloc and return == free)...
Yes grab = malloc and return == free.
I like the
idea of a knowing the amount free and used as well...
My added API is the following:
+++
/**
* alloc a slot from the slotmem free idems.
* @param s ap_slotmem_t to use.
* @param item_id address to return the id of the slot allocates.
* @param mem address to store the pointer to the slot
* @return APR_SUCCESS if all went well
*/
apr_status_t (* ap_slotmem_alloc)(ap_slotmem_t *s, int *item_id,
void**mem);
/**
* free a slot (return it to the free list).
* @param s ap_slotmem_t to use.
* @param item_id the id of the slot in the slotmem.
* @param mem pointer to the slot
* @return APR_SUCCESS if all went well
*/
apr_status_t (* ap_slotmem_free)(ap_slotmem_t *s, int item_id,
void*mem);
/**
* Lock the slotmem.
* @param s ap_slotmem_t to use.
* @return APR_SUCCESS if all went well
*/
int (*ap_slotmem_get_used)(ap_slotmem_t *s, int *ids);
/**
* Return the size of the slotmem table.
* @param s ap_slotmem_t to use.
* @return number of slotmem that cant be stored in the slotmem table.
*/
int (*ap_slotmem_get_max_size)(ap_slotmem_t *s);
+++
The code is already tested, should I commit it?
I already have a return data-size and return data-num, but +1