mempool:remove unnecessary alignment

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
This commit is contained in:
anjiahao
2022-11-24 11:28:09 +08:00
committed by Xiang Xiao
parent 0a88799bab
commit f00d56337f
2 changed files with 9 additions and 26 deletions
+1 -1
View File
@@ -39,7 +39,7 @@
struct mempool_s; struct mempool_s;
typedef CODE void *(*mempool_alloc_t)(FAR struct mempool_s *pool, typedef CODE void *(*mempool_alloc_t)(FAR struct mempool_s *pool,
size_t alignment, size_t size); size_t size);
typedef CODE void (*mempool_free_t)(FAR struct mempool_s *pool, typedef CODE void (*mempool_free_t)(FAR struct mempool_s *pool,
FAR void *addr); FAR void *addr);
+8 -25
View File
@@ -73,19 +73,15 @@ static inline void mempool_add_list(FAR struct list_node *list,
} }
static inline FAR void *mempool_malloc(FAR struct mempool_s *pool, static inline FAR void *mempool_malloc(FAR struct mempool_s *pool,
size_t alignment, size_t size) size_t size)
{ {
if (pool->alloc != NULL) if (pool->alloc != NULL)
{ {
return pool->alloc(pool, alignment, size); return pool->alloc(pool, size);
}
else if (alignment == 0)
{
return kmm_malloc(size);
} }
else else
{ {
return kmm_memalign(alignment, size); return kmm_malloc(size);
} }
} }
@@ -152,7 +148,6 @@ int mempool_init(FAR struct mempool_s *pool, FAR const char *name)
#else #else
size_t blocksize = pool->blocksize; size_t blocksize = pool->blocksize;
#endif #endif
size_t alignment = 0;
size_t ninterrupt; size_t ninterrupt;
size_t ninitial; size_t ninitial;
size_t count; size_t count;
@@ -168,12 +163,7 @@ int mempool_init(FAR struct mempool_s *pool, FAR const char *name)
list_initialize(&pool->alist); list_initialize(&pool->alist);
#endif #endif
if ((pool->blocksize & (pool->blocksize - 1)) == 0) blocksize = ALIGN_UP(blocksize, pool->blocksize);
{
alignment = pool->blocksize;
blocksize = ALIGN_UP(blocksize, alignment);
}
ninitial = pool->initialsize / blocksize; ninitial = pool->initialsize / blocksize;
ninterrupt = pool->interruptsize / blocksize; ninterrupt = pool->interruptsize / blocksize;
count = ninitial + ninterrupt; count = ninitial + ninterrupt;
@@ -181,8 +171,8 @@ int mempool_init(FAR struct mempool_s *pool, FAR const char *name)
{ {
FAR char *base; FAR char *base;
base = mempool_malloc(pool, alignment, base = mempool_malloc(pool, blocksize * count +
blocksize * count + sizeof(struct list_node)); sizeof(struct list_node));
if (base == NULL) if (base == NULL)
{ {
return -ENOMEM; return -ENOMEM;
@@ -257,18 +247,11 @@ retry:
#else #else
size_t blocksize = pool->blocksize; size_t blocksize = pool->blocksize;
#endif #endif
size_t alignment = 0;
size_t nexpand; size_t nexpand;
if ((pool->blocksize & (pool->blocksize - 1)) == 0) blocksize = ALIGN_UP(blocksize, pool->blocksize);
{
alignment = pool->blocksize;
blocksize = ALIGN_UP(blocksize, alignment);
}
nexpand = pool->expandsize / blocksize; nexpand = pool->expandsize / blocksize;
blk = mempool_malloc(pool, alignment, blk = mempool_malloc(pool, blocksize * nexpand + sizeof(*blk));
blocksize * nexpand + sizeof(*blk));
if (blk == NULL) if (blk == NULL)
{ {
return NULL; return NULL;