30#include "CombBLAS/MemoryPool.h"
39 freelist.push_back(m);
46 if ((*iter).size >
size)
48 char *
free = (*iter).begin;
49 (*iter).begin +=
size;
55 cout <<
"No pinned memory available" <<
endl;
62 if( ((
char*) base) >= initbeg && (((
char*)base) +
size) < initend)
70 if(
titr->begaddr() == ((
char*)base) +
size)
72 titr->begin = (
char*)base;
78 freelist.insert(
titr, m);
81 else if(
litr == freelist.end() )
83 if(
titr->endaddr() == (
char*)base)
90 freelist.insert(
litr, m);
96 while(
litr != freelist.end() &&
litr->begaddr() < (
char*)base)
102 if(
titr->endaddr() == (
char*)base)
105 if(
litr == freelist.end() ||
litr->begaddr() != ((
char*)base) +
size)
112 freelist.erase(
litr);
117 if(
litr == freelist.end() ||
litr->begaddr() != ((
char*)base) +
size)
122 freelist.insert(
litr, m);
126 litr->begin = (
char*)base;
134 cerr <<
"Memory starting at " << base <<
" and ending at "
135 << (
void*) ((
char*) base +
size) <<
" is out of pool bounds, cannot dealloc()" <<
endl;
145 outfile <<
"Chunk " << i <<
" of size: " << (*iter).size <<
" starts:" << (
void*)(*iter).begin
146 <<
" and ends: " << (
void*) ((*iter).begin + (*iter).size) <<
endl ;
void * alloc(size_t size)
MemoryPool(void *m_beg, size_t m_size)
void dealloc(void *base, size_t size)
std::ofstream & operator<<(std::ofstream &outfile, const SpMat< UIT, UNT, UDER > &s)