version 1.1.2.3, 2012/02/27 23:57:12
|
version 1.1.2.4, 2012/02/28 00:13:26
|
Line 235 mpool_malloc(mpool_t * __restrict mp, u_int size, cons
|
Line 235 mpool_malloc(mpool_t * __restrict mp, u_int size, cons
|
* return: -1 error or 0 ok |
* return: -1 error or 0 ok |
*/ |
*/ |
int |
int |
mpool_purge(mpool_t * __restrict mp, int atmost) | mpool_purge(mpool_t * __restrict mp, u_int atmost) |
{ |
{ |
register int i, cx = 0; | register int i, cx; |
struct tagAlloc *m, *tmp; |
struct tagAlloc *m, *tmp; |
|
|
if (!mp) { |
if (!mp) { |
Line 247 mpool_purge(mpool_t * __restrict mp, int atmost)
|
Line 247 mpool_purge(mpool_t * __restrict mp, int atmost)
|
|
|
mpool_lock(mp); |
mpool_lock(mp); |
|
|
for (i = 0; i < MEM_BUCKETS; i++) { | for (i = cx = 0; i < MEM_BUCKETS; cx = 0, i++) { |
TAILQ_FOREACH_SAFE(m, &mp->pool_inactive[i], alloc_node, tmp) { |
TAILQ_FOREACH_SAFE(m, &mp->pool_inactive[i], alloc_node, tmp) { |
/* count barrier for purge */ | /* barrier for purge */ |
if (cx++ < atmost) | if (cx < atmost) { |
| cx++; |
continue; |
continue; |
|
} |
|
|
TAILQ_REMOVE(&mp->pool_inactive[i], m, alloc_node); |
TAILQ_REMOVE(&mp->pool_inactive[i], m, alloc_node); |
/* statistics */ |
/* statistics */ |