MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / validate_index

Method validate_index

dds/DCPS/MemoryPool.cpp:259–297  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

257
258#ifdef VALIDATE_MEMORY_POOL
259void
260FreeIndex::validate_index(FreeIndex& index, unsigned char* base, bool log)
261{
262 if (log) {
263 FreeIndexNode* node = index.nodes_;
264 while (node < index.nodes_ + index.size_) {
265 if (node->ptr()) {
266 ACE_OS::printf(" IND[%4d] -> %4d\n", node->size(), node->ptr()->size());
267 } else {
268 ACE_OS::printf(" IND[%4d] -> NULL\n", node->size());
269 }
270 ++node;
271 }
272 }
273
274 // Validate searches of each size
275 for (size_t size = min_index; size <= max_index; size *= 2) {
276 // Find size or larger
277 FreeHeader* size_or_larger = index.find(size, base);
278 if (size_or_larger) {
279 TEST_CHECK(size_or_larger->size() >= size);
280 }
281 }
282
283 // Validate each node points to a free block of the proper size;
284 for (FreeIndexNode* node = index.nodes_; node < index.nodes_ + index.size_; ++node) {
285 FreeHeader* block = node->ptr();
286 if (block) {
287 // node should point to a free block of the proper size;
288 TEST_CHECK(node->contains(block->size()));
289
290 FreeHeader* smaller = block;
291 while ((smaller = smaller->smaller_free(base))) {
292 // Anything smaller should be too small for this node
293 TEST_CHECK(smaller->size() < node->size());
294 }
295 }
296 }
297}
298#endif
299
300MemoryPool::MemoryPool(unsigned int pool_size, size_t granularity)

Callers

nothing calls this directly

Calls 5

smaller_freeMethod · 0.80
ptrMethod · 0.45
sizeMethod · 0.45
findMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected