Add overalignment support for node_allocator, private_node_allocator and cached_node_allocator

This commit is contained in:
Ion Gaztañaga
2026-01-13 23:30:43 +01:00
parent fb5ba06d6c
commit c9aa051025
10 changed files with 187 additions and 37 deletions

View File

@@ -16,17 +16,49 @@ typedef managed_shared_memory::segment_manager segment_manager_t;
int main ()
{
typedef ipcdetail::private_node_pool
<segment_manager_t, 4, 64> node_pool_t;
{ //Private, normal alignment, small data
typedef ipcdetail::private_node_pool
<segment_manager_t, 1u, 64, 0> node_pool_t;
if(!test::test_all_node_pool<node_pool_t>())
return 1;
if (!test::test_all_node_pool<node_pool_t>())
return 1;
}
{ //Private, small alignment, small data
typedef ipcdetail::private_node_pool
<segment_manager_t, 1u, 64, 2u> node_pool_t;
typedef ipcdetail::shared_node_pool
<segment_manager_t, 4, 64> shared_node_pool_t;
if (!test::test_all_node_pool<node_pool_t>())
return 1;
}
{ //Private, normal alignment
typedef ipcdetail::private_node_pool
<segment_manager_t, sizeof(void*), 64, 0> node_pool_t;
if(!test::test_all_node_pool<shared_node_pool_t>())
return 1;
if (!test::test_all_node_pool<node_pool_t>())
return 1;
}
{ //Private, overaligned
typedef ipcdetail::private_node_pool
<segment_manager_t, sizeof(void*), 64, sizeof(void*)*4U> node_pool_t;
if (!test::test_all_node_pool<node_pool_t>())
return 1;
}
{ //Shared, normal alignment
typedef ipcdetail::shared_node_pool
<segment_manager_t, 4, 64, 0> node_pool_t;
if (!test::test_all_node_pool<node_pool_t>())
return 1;
}
{ //Shared, overaligned
typedef ipcdetail::shared_node_pool
<segment_manager_t, sizeof(void*), 64, sizeof(void*)*4u> node_pool_t;
if (!test::test_all_node_pool<node_pool_t>())
return 1;
}
return 0;
}