void TestBackend() { rml::MemPoolPolicy pol(getMallocMem, putMallocMem); rml::MemoryPool *mPool; pool_create_v1(0, &pol, &mPool); rml::internal::ExtMemoryPool *ePool = &((rml::internal::MemoryPool*)mPool)->extMemPool; rml::internal::Backend *backend = &ePool->backend; for( int p=MaxThread; p>=MinThread; --p ) { TestBackendWork::initBarrier(p); NativeParallelFor( p, TestBackendWork(backend) ); } BlockI *block = backend->getSlabBlock(1); ASSERT(block, "Memory was not allocated"); backend->putSlabBlock(block); pool_destroy(mPool); }
void TestBackend() { rml::MemPoolPolicy pol(getMallocMem, putMallocMem); rml::MemoryPool *mPool; pool_create_v1(0, &pol, &mPool); rml::internal::ExtMemoryPool *ePool = &((rml::internal::MemoryPool*)mPool)->extMemPool; rml::internal::Backend *backend = &ePool->backend; for( int p=MaxThread; p>=MinThread; --p ) { // regression test against an race condition in backend synchronization, // triggered only when WhiteboxTestingYield() call yields for (int i=0; i<100; i++) { TestBackendWork::initBarrier(p); NativeParallelFor( p, TestBackendWork(backend) ); } } BlockI *block = backend->getSlabBlock(1); ASSERT(block, "Memory was not allocated"); backend->putSlabBlock(block); pool_destroy(mPool); }