Skip to content
Snippets Groups Projects
Commit da4d1ea3 authored by whh8b's avatar whh8b
Browse files

Add GetFreeRanges() support.

parent a219e09a
No related branches found
No related tags found
No related merge requests found
...@@ -51,6 +51,7 @@ class ZiprMemorySpace_t : public MemorySpace_t ...@@ -51,6 +51,7 @@ class ZiprMemorySpace_t : public MemorySpace_t
void MergeFreeRange(RangeAddress_t addr); void MergeFreeRange(RangeAddress_t addr);
RangeSet_t::iterator FindFreeRange(RangeAddress_t addr); RangeSet_t::iterator FindFreeRange(RangeAddress_t addr);
Range_t GetFreeRange(int size); Range_t GetFreeRange(int size);
std::list<Range_t> GetFreeRanges(size_t size = 0);
std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator> std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator>
GetNearbyFreeRanges(const RangeAddress_t hint, size_t count = 0); GetNearbyFreeRanges(const RangeAddress_t hint, size_t count = 0);
void AddFreeRange(Range_t newRange); void AddFreeRange(Range_t newRange);
...@@ -105,6 +106,7 @@ class ZiprMemorySpace_t : public MemorySpace_t ...@@ -105,6 +106,7 @@ class ZiprMemorySpace_t : public MemorySpace_t
RangeAddress_t max_plopped; RangeAddress_t max_plopped;
RangeAddress_t min_plopped; RangeAddress_t min_plopped;
ZiprBooleanOption_t m_verbose; ZiprBooleanOption_t m_verbose;
static bool SortRangeBySize(const Range_t &a, const Range_t &b);
}; };
#endif #endif
...@@ -197,6 +197,26 @@ Range_t ZiprMemorySpace_t::GetLargeRange(void) ...@@ -197,6 +197,26 @@ Range_t ZiprMemorySpace_t::GetLargeRange(void)
return Range_t(0,0); return Range_t(0,0);
} }
bool ZiprMemorySpace_t::SortRangeBySize(const Range_t &a, const Range_t &b)
{
return (a.GetEnd() - a.GetStart()) <= (b.GetEnd() - b.GetStart());
}
std::list<Range_t> ZiprMemorySpace_t::GetFreeRanges(size_t size)
{
list<Range_t> result;
for( RangeSet_t::iterator it=free_ranges.begin();
it!=free_ranges.end();
++it)
{
Range_t r=*it;
if(r.GetEnd() - r.GetStart() >= (unsigned) size)
result.push_back(r);
}
result.sort(SortRangeBySize);
return result;
}
Range_t ZiprMemorySpace_t::GetFreeRange(int size) Range_t ZiprMemorySpace_t::GetFreeRange(int size)
{ {
vector<Range_t> v; vector<Range_t> v;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment