diff --git a/include/zipr_mem_space.h b/include/zipr_mem_space.h index 493c054a086cc5d84c9ad8fc6a1b4a235fa45c9c..00fb766fb1563fd3fb730e720181ad6380831697 100644 --- a/include/zipr_mem_space.h +++ b/include/zipr_mem_space.h @@ -51,6 +51,7 @@ class ZiprMemorySpace_t : public MemorySpace_t GetNearbyFreeRanges(const RangeAddress_t hint, size_t count = 0); void AddFreeRange(Range_t newRange); void RemoveFreeRange(Range_t newRange); + Range_t GetLargeRange(void); // queries about free areas. bool AreBytesFree(RangeAddress_t addr, int num_bytes); diff --git a/src/memory_space.cpp b/src/memory_space.cpp index 79807e81e40c61851f75c56f72f2ac1bbc4f610c..5a9ed3cded6074bb13da3cb7ce0f29c6b78b74d7 100644 --- a/src/memory_space.cpp +++ b/src/memory_space.cpp @@ -184,6 +184,19 @@ std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator> result, free_ranges.end()); } +Range_t ZiprMemorySpace_t::GetLargeRange(void) +{ + for( RangeSet_t::iterator it=free_ranges.begin(); + it!=free_ranges.end(); + ++it) + { + Range_t r=*it; + if(r.GetEnd()==(RangeAddress_t)-1) + return r; + } + return Range_t(0,0); +} + Range_t ZiprMemorySpace_t::GetFreeRange(int size) { vector<Range_t> v;