13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* 23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project 33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License"); 53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License. 63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at 73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * http://www.apache.org/licenses/LICENSE-2.0 93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software 113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS, 123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and 143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License. 153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*================================================================================================== 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Source Name: dmAllocatedPointersPool.cc 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby General Description: Implementation of the DMAllocatedPointersPool class 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/ 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmMemory.h" 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmThreadHelper.h" 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <stdio.h> 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <sys/time.h> 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <signal.h> 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmAllocatedPointersPool.h" 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef DEBUG 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMAllocatedPointersPool::~DMAllocatedPointersPool() 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef DEBUG 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //PrintUnreleased(); 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMAllocatedPointersPool::PrintUnreleased() 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMSingleLock oLock( m_csPointerPoolLock ); 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby std::map<void*, int>::const_iterator vli = m_listOfAllocatedPointers.begin(); 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int nBlockNum = 1; 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while (vli != m_listOfAllocatedPointers.end()) 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby const char *ptr = (const char*)(const void*)vli->first; 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR* ppStr = (CPCHAR*)ptr; 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ptr += 3*sizeof(const char*) + DMAllocatedPointersPool::c_nExtraBytes; 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf( "%d. block (%d bytes) with addr %p was not deallocated; file %s, line %d\n", 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nBlockNum++, (int)ppStr[2], ptr, ppStr[0], (int)ppStr[1] ); 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby vli++; 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( nBlockNum > 1 ) 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf( "\n" ); 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //m_listOfAllocatedPointers.clear(); 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif //DEBUG 64