mirror of
https://github.com/apache/nuttx.git
synced 2026-06-01 07:45:16 +08:00
mempool:remove unnecessary alignment
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
This commit is contained in:
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user