cedric pushed a commit to branch master.

commit fa8c46945331959c40aed1f9a4b5a1fc47e9ad75
Author: Cedric Bail <[email protected]>
Date:   Thu Apr 4 22:54:12 2013 +0900

    eina: align allocated memory to 4096.
---
 src/modules/eina/mp/chained_pool/eina_chained_mempool.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/modules/eina/mp/chained_pool/eina_chained_mempool.c 
b/src/modules/eina/mp/chained_pool/eina_chained_mempool.c
index 9c7ea56..68e7a03 100644
--- a/src/modules/eina/mp/chained_pool/eina_chained_mempool.c
+++ b/src/modules/eina/mp/chained_pool/eina_chained_mempool.c
@@ -65,6 +65,8 @@ static int _eina_chained_mp_log_dom = -1;
 
 #endif
 
+static int aligned_chained_pool = 0;
+
 typedef struct _Chained_Mempool Chained_Mempool;
 struct _Chained_Mempool
 {
@@ -151,7 +153,7 @@ _eina_chained_mp_pool_new(Chained_Mempool *pool)
    p->limit = ptr + pool->item_alloc * pool->pool_size;
 
 #ifndef NVALGRIND
-   VALGRIND_MAKE_MEM_NOACCESS(ptr, pool->alloc_size - 
eina_mempool_alignof(sizeof(Chained_Pool)));
+   VALGRIND_MAKE_MEM_NOACCESS(ptr, pool->alloc_size - aligned_chained_pool);
 #endif
 
    return p;
@@ -469,13 +471,18 @@ eina_chained_mempool_init(const char *context,
         memcpy((char *)mp->name, context, length);
      }
 
+   mp->item_alloc = eina_mempool_alignof(item_size);
+
+   mp->pool_size = (((((mp->item_alloc * mp->pool_size + aligned_chained_pool) 
/ 4096) 
+                     + 1) * 4096)
+                   - aligned_chained_pool) / mp->item_alloc;
+
 #ifdef EINA_DEBUG_MALLOC
    mp->minimal_size = item_size * mp->pool_size + sizeof(Chained_Pool);
 #endif
 
-   mp->item_alloc = eina_mempool_alignof(item_size);
    mp->group_size = mp->item_alloc * mp->pool_size;
-   mp->alloc_size = mp->group_size + 
eina_mempool_alignof(sizeof(Chained_Pool));
+   mp->alloc_size = mp->group_size + aligned_chained_pool;
 
 #ifndef NVALGRIND
    VALGRIND_CREATE_MEMPOOL(mp, 0, 1);
@@ -556,6 +563,8 @@ Eina_Bool chained_init(void)
      }
 
 #endif
+   aligned_chained_pool = eina_mempool_alignof(sizeof(Chained_Pool));
+
    return eina_mempool_register(&_eina_chained_mp_backend);
 }
 

-- 

------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html

Reply via email to