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